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 <!-- m --><a class="postlink" href="http://kumbiaphp.com/foro/viewtopic.php?f=21&t=773">http://kumbiaphp.com/foro/viewtopic.php?f=21&t=773</a><!-- m -->
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&#46;php
PSO 3:
el contenido de online.php
&lt;?php
class Online{
public function __construct(){
	
}
static  function set_user($id){
$lastid						=		Session&#58;&#58;get(&quot;logs_id&quot;);
$rec							=		new Logs();
$rec-&gt;find($lastid);
$rec-&gt;usuarios_id	=		$id;
$rec-&gt;ip						=		$_SERVER&#91;'REMOTE_ADDR'&#93;;
$rec-&gt;save();
if($rec-&gt;select_one(&quot;LAST_INSERT_ID()&quot;)!=0)
	Session&#58;&#58;set(&quot;logs_id&quot;, $rec-&gt;select_one(&quot;LAST_INSERT_ID()&quot;));

}
}
?&gt;

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&#46;php

PASO 5:
contenido de utils.php
&lt;?php
function fentrada($cad){
	$uno=substr($cad, 0, 2);
	$dos=substr($cad, 3, 2);
	$tres=substr($cad, 6, 4);
	$cad2 = ($tres&#46;&quot;/&quot;&#46;$dos&#46;&quot;/&quot;&#46;$uno);
	return $cad2;
}
function fsalida($cad2){
	$tres=substr($cad2, 0, 4);
	$dos=substr($cad2, 5, 2);
	$uno=substr($cad2, 8, 2);
	$cad = ($uno&#46;&quot;/&quot;&#46;$dos&#46;&quot;/&quot;&#46;$tres);
	return $cad;
}

?&gt;

PASO 6:
agregar los herlpers a nuestra aplicacion: debes incluir estas librerias en el main.php de esta manera:
&lt;?php
/**
 * Todo helper que se coloque aqui estara disponible en toda la aplicacion
 **/
require_once 'library/online&#46;php';
require_once 'library/utils&#46;php';
?&gt;


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-&gt;Usuarios-&gt;id  obtiengo el id de la Tabla usuarios
Session&#58;&#58;set_data('usuarios_id', $this-&gt;Usuarios-&gt;id);

PASO 9:
ahora en todas las paginas y sus funciones colocar el sigte codigo:
Online&#58;&#58;set_user(Session&#58;&#58;get(&quot;usuarios_id&quot;));

ej:
function index(){
  Online&#58;&#58;set_user(Session&#58;&#58;get(&quot;usuarios_id&quot;));
/* codigo */
}
function insert(){
  Online&#58;&#58;set_user(Session&#58;&#58;get(&quot;usuarios_id&quot;));
/* codigo */
}
function before_insert(){
  Online&#58;&#58;set_user(Session&#58;&#58;get(&quot;usuarios_id&quot;));
/* codigo */
}
function delete(){
  Online&#58;&#58;set_user(Session&#58;&#58;get(&quot;usuarios_id&quot;));
/* codigo */
}
function buscar(){
  Online&#58;&#58;set_user(Session&#58;&#58;get(&quot;usuarios_id&quot;));
/* codigo */
}
function etc(){
  Online&#58;&#58;set_user(Session&#58;&#58;get(&quot;usuarios_id&quot;));
/* 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&#46;php
&lt;?php
class LogsController extends ApplicationController  {
	function index(){
		$this-&gt;fecha	=	fentrada($this-&gt;request(&quot;fecha&quot;));
		if($this-&gt;fecha!=&quot;//&quot;){
			$this-&gt;items	=	$this-&gt;Logs-&gt;find(&quot;fecha_in BETWEEN '$this-&gt;fecha 00&#58;00&#58;00' AND '$this-&gt;fecha 23&#58;59&#58;59'&quot;, &quot;order&#58; id desc&quot;);
		}else{
			$this-&gt;fecha	=	date(&quot;Y/m/d&quot;);
			$this-&gt;items	=	$this-&gt;Logs-&gt;find(&quot;fecha_in BETWEEN '$this-&gt;fecha 00&#58;00&#58;00' AND '$this-&gt;fecha 23&#58;59&#58;59'&quot;, &quot;order&#58; id desc&quot;);
		}
	}
}
?&gt;

modelo:
logs.php
 KUMBIA_PATH/apps/default/model/logs&#46;php
&lt;?php		
	class Logs extends ActiveRecord {

	}
	
?&gt;

una vista:
 KUMBIA_PATH/apps/default/view/logs/index&#46;phtml
&lt;? content() ?&gt;
&lt;span class=&quot;label&quot;&gt;&lt;?= date(&quot;d/m/Y H&#58;m&#58;s&quot;)?&gt;&lt;/span&gt;
&lt;?= form_tag(&quot;logs&quot;) ?&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;? $fecha	= fsalida($fecha); ?&gt;
	&lt;?= date_field_tag(&quot;fecha&quot;, &quot;class&#58; label&quot;, &quot;size&#58; 10&quot;, &quot;value&#58; $fecha&quot;) ?&gt;
	&lt;?= submit_tag(&quot;Ir&quot;)?&gt;
&lt;/div&gt;
&lt;?= end_form_tag() ?&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;table align=&quot;center&quot; width=&quot;80%&quot;&gt;
&lt;tr class=&quot;tabla_grupos&quot;&gt;
	&lt;th&gt;Usuario&lt;/th&gt;
	&lt;th&gt;Fec&#46; y hora de inicio&lt;/th&gt;
	&lt;th&gt;Fec&#46; y hora de t&amp;eacute;rmino&lt;/th&gt;
	&lt;th&gt;Ip de acceso&lt;/th&gt;
&lt;/tr&gt;
&lt;? 
$class		=	&quot;browse_primary&quot;;
foreach ($items as $item)&#58; 
$aTmp_1		=	explode(&quot; &quot;,$item-&gt;fecha_at);
$aTmp_2		=	explode(&quot; &quot;,$item-&gt;fecha_in);
$fecha_ini	=	fsalida($aTmp_1&#91;0&#93;)&#46;&quot; &quot;&#46;$aTmp_1&#91;1&#93;;
$fecha_fin	=	fsalida($aTmp_2&#91;0&#93;)&#46;&quot; &quot;&#46;$aTmp_2&#91;1&#93;;
$usuarios	=	$Usuarios-&gt;find($item-&gt;usuarios_id);
?&gt;
&lt;tr class=&quot;&lt;?= $class ?&gt;&quot;&gt;
	&lt;td&gt;&lt;?= $usuarios-&gt;nombre ?&gt;&lt;/td&gt;
	&lt;td align=&quot;center&quot;&gt;&lt;?= $fecha_ini ?&gt;&lt;/td&gt;
	&lt;td align=&quot;center&quot;&gt;&lt;?= $fecha_fin ?&gt;&lt;/td&gt;
	&lt;td align=&quot;center&quot;&gt;&lt;?= $item-&gt;ip ?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;? 
if($class==&quot;browse_primary&quot;)
	$class = &quot;browse_secondary&quot;;
else 
	$class	=	&quot;browse_primary&quot;;
endforeach; ?&gt;
&lt;/table&gt;
Sign In or Register to comment.