Académique Documents
Professionnel Documents
Culture Documents
5.2 Diagramas de clases.
fole_js html sidebar
+$files +$menu
+$ret +$jquery
+$script
+check()
+$style
+inputname()
+$plugin
+add() +calendar()
+$CFG
+cargar() +show_date()
+$search
+list_date()
+$menu
+select()
+lista() +cargar_css()
+cargar_js()
+ajax() +plugin()
+boton() +search()
+menu()
+cargar()
compressor
izanami view
I
+$options
+compressor()
+set_options()
vista file_css
+start() +$array +$files
+compress()
+ignore()
view
+$view +$script
+$permiso
+finish()
+$object
+$ajax
+add()
+javascript()
+css()
+$archivo
+_construct()
+cargar()
+page()
+$FoView
+permiso()
+create_gz_compress() +view()
+ajax()
+set_gzip_header() +addparameter()
+firstlogin()
+doJemove() +menu()
+agregados()
+do_compress() +showFile()
+def()
+_remove_scripts() +cargar()
+cargar()
+get_newjile() +ViewType()
+getjile_dates() +get_archivo()
+get_script_array()
+archivo()
+getjilejocations() +tags()
+set_gzip_headers()
search
+strip_querystring()
+minify_text() +$input
+trimwhitespace()
custom
+$result
+trimwhitespace_replace()
+$1ista
+$attrib
+get_current_path()
+$title
+Attrib()
+do_cleanup()
+$plugin +getAttrib()
+getjilesjn_dir() +plugin()
+inputAttrib($value)
+add_media_header() +title()
+getlnputAttrib()
+convert_paths_to_absolute() +getTitle()
+resultAttrib()
+convert_css_bgr_to_data()
+getResultAttrib()
+unify_dir_separator()
J +get_menu()
+getjile_extension()
+get_mimetype()
+startTimer() menu
+returnTime()
+$dir
+a()
+get_menu()
AjaKReportes
+$db
+$user
+$array
+$reporto
+$usuario
+$id
+insertor()
+insertar_comontorlo()
+statuSJOporto()
+comments()
UsuarioA jax
+$db
+$consult
+$grupos
+$view
ajax
+$db
+$user
+$consulta
+$tabla
+$rows
+$total
+$nt;J'eso
+$e!)'eso
+$deudas
AjaxSidebar
+$re<rnantto
+Irvesos()
+Egresos()
t<aj aCiica()
+inquainos(}
+cargaDeudores()
+Recuperadonf\lantenimiento()
+recuperacion_cuotas_extraordinaria()
1 cuot.:_montto_por_p,:,g,:,r()
+cuota_adelantda_saldo_afavor()
+intereses_cuota_ordinaria()
+inquilino()
AjaxJnoresos
+$db
+$consult
+$inorosos
+$usuario
+$concopto
+$view
+modificorlnoroso()
+Modificodolnoroso()
Reportes_Ajax
+ db
+ user
+ casa
+ view
+ mensaje
+ array
+ tabla
+ arlog
+ rows
+ total
+nquilino()
+Jm()
+nquilinos()
+nsertar()
+nsertar_comentario()
+<talusJepol'te()
+:onvnents()
+Irvesos()
+ogesos()
+::ajaCiica()
Ajax_CajaChica
+$mes
+$anio
+$db
+$consulta
+$saldo
+$rows
+$dialni
+$diaFin
+cargarCaja()
66
67
config
+$config
+$type
+$host
+$user
+$pass
+$name
+$app
+$control
+$model
+$view
+$dir
+$redirection
+$path
+$version
+$lib
+$file
+$folderName
+$Architecture
+SetDatabase()
+SetlayerDir()
+SetPiuginDir()
+SetAppDir()
+SetRedir()
+SetPath()
+SetVersion()
+SetlibDir()
+SetEnvironment()
+Setldentify()
+Seturl()
+SetProject()
+SetCssFolderName()
+SetJsFolderName()
+SetPiuginFolder()
+SetProjectConfig()
+Set Type()
+Cargar()
+$menus
+$id
+$name
+$data
+addMenu()
+additem()
+getiD()
+getMenus()
+DB2Text()
segurldad
+$res<Jt
+antlxss()
Hntlsql()
+encrypt()
+decrypt()
+noIn jection()
+noXSS()
user
+$uname
+$password
+$remember
+login()
+logout()
+Insertuser()
+randorrl'assQ
+data()
+group()
+Exists()
+nora()
+diasQ
J configuration I
-
+$redir
system
+CaiiController()
+CaiiModel()
+CaiiView()
+CaiiUser()
+CaiiDataBase()
+CaiiCore()
menus
modules
+$modules
+$folderName
+Calllog()
+$name
+$file
+$folder
+add()
+addEq()
+getModule()
+DB2Text()
-
redirects
+$module
+$red
+$option
+add()
+get()
+exists()
+DB2Text()
plugin
+private $plugin
+private $f unction
+plugin()
+exist()
+cargar_modulo()
+cargar()
+AI)'egados()
a jaM
+select()
IzanamiController
""
log
+$db
+$user
+insert()
+tUserLOQ()
+tGrouplo; O
+getActionLo9()
core
+cargar()
+archivo()
+paginator()
+variable()
+f unction()
+css()
+contenido()
+sidebar()
+Qet_def ault _sidebar()
+redirect()
+Qet_redirect_dir()
+f rontend()
+option()
68
Cliente ajaM
+$db
+$user
+$log
+$us
+$array
+$1d
+$arlog
+$consulta
+$items
+insertar()
+cargar()
+agenda()
G--""-1
Mantenimiento_AjaK ajax
Jardineria A jaK
+$array
fi +select()
+muestra()
+$id
1'
+$fed
+envi<wO
+ Ia()
Ingresos Ajax
+envii>Mantto() +$&
+tablalarci>erla()
+tablaMantri!Wento()
........WaproeedooO
+m.rtto_rwestro()
+jardi'>eriajorm()
+IJ<oveedorJorm()
Egresos_A jaK
+$db
+$IOQ
+$fechaFactura
+$fechaCobro
+$inqli
+$consUl:a
+$<\Q
+$serndos
+$t>Quli>o
+inQu!ino()
ffisertar_ingreso()
+inquilinos()
Agenda ajaK
+$array +$db
+$ariOQ
+envior()
+envlalnverslon()
+enviocajachlca()
+formlnverslones()
+flujosEfe()
+$consulta
+$item
+$am
clientes
+$h
+$m
r---
+$db
+$date
+cajachlca()
+tablaEQresos()
+$return
+$view
+$agenda
+_construct()
+reporte jorm()
+agenda()
+data()
+cargar _agenda()
+insertar _agenda()
+create_agenda()
69
Capitulo 6. Desarrollo
6.1 Aplicacin
En esta capa esta todo el proyecto completo, todas las dems capas son
simplemente clases, mtodos y funciones necesarias para que sea mas fcil
desarrollar esta capa.
<?php
/**
* Este es el archivo es el archivo principal del Framework en el Proyecto
*
* Este archivo sirve para la correcta utilizacion del codigo en un espacio
pequeo
* y amigable con el desarrollador.
* En el proyecto, en este archivo se crea el manejador de las vistas que
existen
* en esta carpeta
*/
//import($CFG['dirapp'].DS.'classes'.DS.'class.php');
$vista = array(
'Administracion'=>array(
'permiso'=>'Administrador',
'folder'=>'Administracion',
),
'Clientes'=>array(
'permiso'=>'Cliente',
'folder'=>'Clientes',
),
'Developers'=>array(
70
'permiso'=>'Desarrollo',
'folder'=>'Developers'
),
'Seguridad'=>array(
'permiso'=>'Seguridad',
'folder'=>'Seguridad'
)
);
$vista = new vista($vista);
$vista->firstLogin();
$grupo=$user->group();
$vista->permiso($grupo['nombre']);
$vista->cargar();
?>
6.1 Configuracion
Para configurar el sistema, se necesitan llamar a cuatro clases, las cuales son
donde se cargan los modulos que se utilizaran, se cargan los menus de cada
grupo de usuarios y se cargan las redirecciones, adems, de una seria de
mtodos que permiten darle mas funcionalidad a ciertas partes del sistema.
<?php
/**
* Archivo de Configuracion
*
* Este archivo es donde se da de alta toda la configuracion del framework
* dentro del proyecto, dando como resultado un sistema mas acorde a lo que
* uno desea.
*/
71
$config->SetDatabase('mysql','localhost','root','','izanami');
$config->SetProject('Rincon del Cielo','0.6');
$config-
>SetProjectConfig('WebApp','Vistas',array('Control','Model','View'));
$config->SetCssFolderName('stylesheet');
$config->SetJsFolderName('js');
$config->SetIdentify('cookie','user','login.php');
$config->SetType('Text');//'Text','DB'
$config->SetEnvironment(_Production);
Modules::add('note','Notas','mostrar');
Modules::add('reportes','Reportes','reportes');
Modules::add('agenda','Agenda','agenda');
Modules::add('ingresos','Ingresos','ingresos');
Modules::add('egresos','Egresos','egresos');
Modules::add('usuario','Usuarios','usuario');
Modules::add('reportesSegur','Reporte Seguridad','reportesSegur');
Modules::add('mantenimiento','Mantenimiento','mantenimiento');
Modules::add('bitacora','Bitacora','bitacora');
// Menu: Administrador
menus::addMenu('admin','Menu Administrador');
menus::addItem('admin','Dashboard','{inicio}');
menus::addItem('admin','Ingresos','{redir:ingresos}');
menus::addItem('admin','Reportes','{redir:reportes}');
menus::addItem('admin','Agenda','{redir:agenda}');
72
menus::addItem('admin','Egresos','{redir:egresos}');
menus::addItem('admin','Mantenimiento','{redir:mantenimiento}');
menus::addItem('admin','Usuario','{redir:usuario}');
// Menu: Desarrollador
menus::addMenu('dev','Menu Desarrollador');
menus::addItem('dev','Usuarios','{redir:usuario}');
// Menu: Seguridad
menus::addMenu('secure','Menu Seguridad');
menus::addItem('secure','Dashboard','{inicio}');
menus::addItem('secure','Reportes','{redir:reportesSegur}');
menus::addItem('secure','Bitacora','{redir:bitacora}');
redirects::add('notes','note');
redirects::add('reportes','reportes');
redirects::add('reportesSegur','reportesSegur');
redirects::add('bitacora','bitacora');
redirects::add('agenda','agenda');
redirects::add('ingresos','ingresos');
redirects::add('egresos','egresos');
redirects::add('usuario','usuario');
redirects::add('mantenimiento','mantenimiento');
?>
6.2 Vistas
El sistema maneja cuatro vistas, que siguen la misma lgica, mostrarle al
usuario la plantilla que quiere ver. En el caso de Clientes, este no maneja
73
modulos debido a que es solo la vista, esta es la que se encarga de mostrarle
al usuario todo lo que necesita.
Administrador
Clientes
Desarrollador
Seguridad
6.3 Mdulos
Agenda
Este modulo genera mensajes guardados usando fechas y horas especificas
por el usuario y mostrado para un usuario especifico.
<?php
/**
* Este archivo es el archivo por default de el modulo Agenda
*
* Este archivo es el archivo llamado por default, al ingresar al modulo
* este archivo muestra la Agenda que ha sido creada y un pequeo formulario
* para insertar nuevos recordatorios.
*/
$css = new file_css();
$css-
>add(array('file'=>'agenda','type'=>'plugins','plugin'=>_Plugin));
$js = new file_js();
$js->add(array('file'=>'agenda','type'=>'plugins','plugin'=>_Plugin));
$agenda=new view('index','plugin',_Plugin);
$agenda->addparameter('css',$css->cargar());
$agenda->addparameter('javascript',$js->cargar());
$agenda->addparameter('fecha',date('m/d/Y h:i a'));
$agenda->cargar();
74
?>
Ajax
<?php
/**
* Clase Agenda Ajax
*
* Manejo de las llamadas Ajax del modulo de Agenda
*
* Maneja las llamadas de el modulo de Agenda, en cuanto al ajax
* este a su vez est utilizando una clase ajax creada en el framework
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Module_Agenda
*/
class Agenda_ajax extends ajax{
/**
* Este metodo carga la agenda global dentro de un div.
*/
function cargar_agenda(){
global $db;
$consulta = $db->query('agenda');
foreach($consulta as $item){
$ag = new view('agenda','plugin',_Plugin);
75
$ag-
>addparameter('fecha',prettifyDate($item['fecha_reunion']));
$ag->addparameter('mensaje',$item[' mensaje']);
$ag->cargar();
}
}
/**
* Este metodo es el que responde al querer enviar un recordatorio a la
agenda
*/
function insertar_agenda(){
global $db,$log;
list($date,$hour,$am)=explode(' ',getParameter('fecha'));
list($month,$day,$year)=explode('/',$date);
list($h,$m)=explode(':',$hour);
$am=($am=='pm')?$h+12:$h;
$h=(int)$h;
$m=(int)$m;
$date = mktime($h,$m,0,$month,$day,$year);
$array=array(
'mensaje'=>getParameter('mensaje'),
'descripcion'=>'',
'fecha_creacion'=>time(),
'fecha_reunion'=>$date,
'type'=>getParameter('type'),
);
76
$id = $db->insert('agenda',$array);
$arlog=$array;
$arlog['id']=$id;
$log->insert('Insertar Agenda',serialize($arlog));
$db->variable('id',$id);
$consulta = $db->query('agenda','id={id}');
$item=$consulta[0];
$ag = new view('agenda','plugin',_Plugin);
$ag-
>addparameter('fecha',prettifyDate($item['fecha_reunion']));
$ag->addparameter('mensaje',$item['mensaje']);
$ag->cargar();
}
}
/**
* Esta funcion es la base para el muestreo de cada recordatorio al mostrar la
agenda.
*/
function create_agenda($item,$plugin){
$ag = new view('agenda','plugin',$plugin);
$ag->addparameter('fecha',fecha($item['fecha_reunion']));
$ag->addparameter('mensaje',$item['mensaje']);
$ag->cargar();
}
77
$AgendaAjax = new Agenda_ajax();
$AgendaAjax->select(getParameter('accion'));
?>
Bitcora
Este modulo se crea un formulario para insertar informacin de visitas a el coto,
y se le muestra la lista de visitantes y los horarios en que se visito.
<?php
$js = new file_js();
$js->add(array('file'=>'insertar','type'=>'plugins','plugin'=>_Plugin));
$js->cargar();
$view = new view('formulario','plugin',_Plugin);
$view->cargar();
?>
Ajax
El ajax de este modulo se encarga de todo, existe un mtodo que sirve para la
insercin de los datos que un formulario realiza y se encarga de presentar la
informacin del la base de datos.
<?php
class Bitacora_Ajax extends ajax{
function cargar(){
}
function insertar(){
global $db;
$array=array(
'fecha'=>time(),
78
'asunto'=>getParameter('asunto'),
'npersonas'=>getParameter('numpersonas'),
'casa'=>getParameter('casa'),
'identificacion'=>getParameter('identifica'),
'tipoidentificacion'=>getParameter('tipoindenti'),
'comentarios'=>getParameter('comentario')
);
$id=$db->insert('bitacora',$array);
if($id>0){
echo 'Se inserto satisfactoriamente';
}else{
echo 'Tuvimos problemas al insertarlo';
}
}
function mostrarBitacora(){
global $db;
$consulta = $db->query('bitacora');
$tabla = new
view('reportes_bitacora_seguridad_tabla','plugin',_Plugin);
$titulo;
$rows = '';
foreach($consulta as $tabla_bitacora){
$row=new
view('reportes_bitacora_seguridad_row','plugin',_Plugin);
$row-
>addparameter('fecha',date('j/n/Y',$tabla_bitacora['fecha']));
79
$row-
>addparameter('asunto',$tabla_bitacora['asunto']);
$row-
>addparameter('npersonas',$tabla_bitacora['npersonas']);
$row-
>addparameter('casa',$tabla_bitacora['casa']);
$row-
>addparameter('identificacion',$tabla_bitacora['identificacion']);
$row-
>addparameter('tipoidentificacion',$tabla_bitacora['tipoidentificacion']);
$row-
>addparameter('comentarios',$tabla_bitacora['comentarios']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
}
$Bitacora_Ajax = new Bitacora_Ajax();
$Bitacora_Ajax->select(getParameter('accion'));
?>
Egresos
Este modulo es carga un formulario que es por el cual se insertan los egresos
del sistema. Paran insertar esos egresos en la base de datos es utilizado ajax.
Tiene dos funciones principales Insertar y mostrar Egresos, e insertar y mostrar
Caja Chica.
80
Ajax
Este modulo utiliza ajax para la insercin de egresos y caja chica, en base a un
formulario creado en una plantilla. Tambin es usado para mostrar la
informacin insertada en la base de datos y para su posible modificacin. Para
modificar esta informacin, se usa un lightbox o ventana flotante hecha con
javascript, para hacer ms fcil y llevadera la forma de interactuar con el
sistema.
<?php
/**
* Este archivo es el archivo por default en el modulo Egresos
*
* Este archivo es el archivo llamado por default, al ingresar al modulo
* este archivo muestra el formulario para insertar un egreso.
*/
$css = new file_css();
$js = new file_js();
$css-
>add(array('file'=>'egresos','type'=>'plugins','plugin'=>_Plugin));
$js-
>add(array('file'=>'egresos','type'=>'plugins','plugin'=>_Plugin));
$css->cargar();
$js->cargar();
$form = new view('form','plugin',_Plugin);
$form->addparameter('servicios',servicios());
$form->addparameter('proveedores',proveedores());
$form->cargar();
?>
81
Ingresos
Este modulo tiene el mismo diseo que el modulo de egresos. Se ingresa todo
por un formulario que es cargado por el sidebar, este formulario usa ajax para
insertar la informacin.
Ajax
<?php
class Ingresos_Ajax extends ajax{
function inquilino(){
global $db;
$inqui=explode('|',getParameter('inquilino'));
list($nombre,$apellidos)=$inqui;
$db->variable('nombre',$nombre);
$db->variable('apellidos',$apellidos);
$consulta = $db-
>union(array('u'=>'usuario','c'=>'casas'),array('u'=>'id','c'=>'user'),'u.*,c.casa',"u.
nombre LIKE '{nombre}' AND u.apellidos LIKE '{apellidos}'");
$inq=$consulta[0];
$concepto='';
$servicios=$db->query('serviciosingresos');
$concepto = lista($servicios,'id_servicio','nombreServicio');
$inquilino = new view('inquilino','plugin','ingresos');
$inquilino->addparameter('usuario',$inq);
$inquilino->addparameter('concepto',$concepto);
$inquilino->cargar();
}
function insertar_ingreso(){
global $db,$log;
82
$fechaPago=String2Date(getParameter('fechaPago'));
$user = getParameter('noCondominio');
$array=array(
'fecha'=>time(),
'numrecibo'=>getParameter('numrecibo'),
'Fecha_Pago'=>$fechaPago,
'Referencia'=>getParameter('Referencia'),
'Concepto'=>getParameter('Concepto'),
'Descripcion1'=>getParameter('desc1'),
'Descripcion2'=>getParameter('desc2'),
'Entradas'=>getParameter('entrada'),
'user'=>$user,
);
$id=$db->insert('ingresos',$array);
$arlog=$array;
$arlog['id']=$id;
$log->insert('Insertar Ingreso',serialize($arlog));
if($id>0){
echo 'Se inserto correctamente';
}
}
function inquilinos(){
global $db;
$id_inq=getParameter('name');
$sql = "select * from usuario as u inner join casas as c on
u.id=c.user where u.nombre LIKE '%$id_inq%'";
83
$return=$db->sql($sql);
foreach($return as $us){
echo '<li><a href="'.$us['nombre'].'|'.$us['apellidos'].'"
class="item">'.$us['nombre'].' '.$us['apellidos'].'</a></li>';
}
}
}
$Ingresos_Ajax = new Ingresos_Ajax();
$Ingresos_Ajax->select(getParameter('accion'));
?>
Mantenimiento
Este modulo maneja en realidad tres datos en el sistema, Proveedores,
Mantenimiento y Jardinera, Cada uno con su insercin de informacin y su
tabla.
Ajax
Este modulo maneja Insercin de la informacin de los tres datos, a la vez la
consulta de cada uno con su respectivo formato.
<?php
class Mantenimiento_Ajax extends ajax{
function enviar(){
global $db;
$array = array(
'nombre'=>getParameter('nombre'),
'apellido'=>getParameter('apellido'),
'edo_civil'=>getParameter('edocivil'),
'empresa'=>getParameter('empresa'),
'telefono'=>getParameter('telefono'),
84
'direccion'=>getParameter('direccion'),
'correo'=>getParameter('correo'),
);
$id = $db->insert('proveedores',$array,true);
if($id>0){
echo 'Se ha insertado correctamente';
}else{
echo 'Tuvimos un problema al insertarlo';
}
}
function enviaJandineria() {
global $db;
$fecha = String2Date(getParameter('fecha'));
$array=array(
'evento'=>getParameter('titulo'),
'fecha'=>$fecha,
'descripcion'=>getParameter('desc'),
'proveedor'=>getParameter('proveedor')
);
$id = $db->insert('jardineria',$array);
if($id>0){
echo 'Se ha insertado correctamente';
}else{
85
echo 'Tuvimos un problema al insertarlo';
}
}
function enviaMantto() {
global $db;
$fecha = String2Date(getParameter('fecha'));
$array = array(
'titulo' =>getParameter('titulo'),
'fecha' => $fecha,
'id' => getParameter('proveedor'),
'costo' => getParameter('costo'),
'descripcion' => getParameter('descripcion'),
);
$id = $db->insert('reportemantenimiento',$array);
if($id>0){
echo 'Se ha insertado correctamente';
}else{
echo 'Tuvimos un problema al insertarlo';
}
}
function tablaJardineria(){
global $db;
$consulta = $db-
>union(array('j'=>'jardineria','p'=>'proveedores'),array('j'=>'proveedor','p'=>'id'),'j.
*,concat(p.nombre," ",p.apellido) as proveedores');
$tabla = new view('reportes_jardineria_tabla','plugin',_Plugin);
86
$titulo;
$rows = '';
foreach($consulta as $jardineria){
$fecha = prettifyDate($jardineria['fecha']);
$row=new view('reportes_jardineria_row','plugin',_Plugin);
$row->addparameter('evento',$jardineria['evento']);
$row->addparameter('fecha',$fecha);
$row-
>addparameter('descripcion',$jardineria['descripcion']);
$row->addparameter('proveedor',$jardineria['proveedores']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function tablaMantenimiento(){
global $db;
$consulta = $db->union(
array(
'r'=>'reportemantenimiento',
'p'=>'proveedores'
),
array(
'r'=>'id_reporte',
87
'p'=>'id'
),
'r.*,concat(p.nombre," ",p.apellido) as proveedor'
);
$tabla = new view('reportes_mantenimiento_tabla','plugin',_Plugin);
$rows = '';
foreach($consulta as $tabla_mantto){
$fecha =prettifyDate($tabla_mantto['fecha']);
$row=new view('reportes_mantenimientorow','plugin',_Plugin);
$row->addparameter('titulo',$tabla_mantto['titulo']);
$row->addparameter('fecha',$fecha);
$row-
>addparameter('proveedor',$tabla_mantto['proveedor']);
$row->addparameter('costo',$tabla_mantto['costo']);
$row-
>addparameter('descripcion',$tabla_mantto['descripcion']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function muestraproveedor(){
global $db;
$consulta = $db->query('proveedores');
$tabla = new view('reportes_proveedor_tabla','plugin',_Plugin);
88
$titulo;
$rows = '';
foreach($consulta as $tabla_proveedor){
$row=new view('reportes_proveedor_row','plugin',_Plugin);
$row->addparameter('nombre',$tabla_proveedor['nombre']);
$row->addparameter('apellido',$tabla_proveedor['apellido']);
$row->addparameter('empresa',$tabla_proveedor['empresa']);
$row->addparameter('telefono',$tabla_proveedor['telefono']);
$row->addparameter('direccion',$tabla_proveedor['direccion']);
$row->addparameter('correo',$tabla_proveedor['correo']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function mantto_muestra() {
$html = new html();
global $db;
$proveedor='';
$proveedores=$db->query('proveedores');
$proveedor=lista($proveedores,'id',array('nombre','apellido'));
$v = new view('form_mantenimiento','plugin',_Plugin);
$v->addparameter('proveedor',$proveedor);
$v->cargar();
89
}
function jardineria_form() {
global $db;
$proveedor=lista($db-
>query('proveedores'),'id',array('nombre','apellido'));
$f = new view('form_jardineria','plugin',_Plugin);
$f->addparameter('proveedor',$proveedor);
$f->cargar();
}
function proveedor_form() {
$p = new view('form_proveedor','plugin',_Plugin);
$p->cargar();
}
}
$Mantenimiento_Ajax = new Mantenimiento_Ajax();
$Mantenimiento_Ajax->select(getParameter('accion'));
?>
Reportes
Este modulo se encarga de cargar todos los reportes en un solo lugar, listos
para ser mostrados, y modificados.
AjaxCaja
Se encarga de mostrar la tabla de Caja Chica basada en el y el ao
seleccionado en el mismo sistema.
<?php
/**
90
* Reportes Ajax Caja Chica
*
* Manejo de las llamadas Ajax del modulo Reportes de Caja Chica
*
* Maneja las llamadas de el modulo de Reportes, este se divide a su vez
* en varios archivos, en cuanto al ajax este a su vez esta utilizando
* una clase ajax creada en el framework
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Module_Agenda
*/
class Ajax_CajaChica extends ajax{
/**
* Este metodo carga la agenda global dentro de un div.
*/
function cargarCaja(){
global $db;
$mes = getParameter('month');
$anio = getParameter('year');
$diaIni=mkti me(0,0,0,$mes,1,$anio);
$diaFin=mktime(23,0,0,$mes,date('t',$diaIni),$anio);
$db->variable('diaini',$diaIni);
91
$db->variable('diafin',$diaFin);
$consulta = $db->query('cajachica','fecha_emision>{diaini}
AND fecha_emision<{diafin}');
$tabla = new view('cajachica_tabla','plugin',_Plugin);
$s=saldoInicial(date('n'),date('Y'));
$saldo=$s['saldo'];
$debe=0;
$tabla->addparameter('saldoInicial',$saldo);
$rows = '';
foreach($consulta as $caja){
$transf=($caja['no_transferencia']!=0)?$transf:'';
$entrada=($caja['entrada']!=0)?$entrada:'';
$row=new view('cajachicarow','plugin',_Plugin);
$row-
>addparameter('fecha',date('j/n/Y',$caja['fecha_emision']));
$row->addparameter('trans',$transf);
$row-
>addparameter('factura',$caja['no_factura']);
$row->addparameter('con',$caja['concepto']);
$row->addparameter('entrada',$entrada);
$row->addparameter('salida',$caja['salida']);
$debe=$debe+((double)$caja['salida']);
((double)$caja['salida']);
$saldo=((double)$saldo)-
$row->addparameter('saldo',$saldo);
$rows.=$row->cargar(true);
}
92
$tabla->addparameter('row',$rows);
$tabla->addparameter('repoentrada',$debe);
$tabla->addparameter('saldoFinal',$saldo);
$tabla->cargar();
}
}
$Ajax_CajaChica = new Ajax_CajaChica();
$Ajax_CajaChica->select(getParameter('accion'));
?>
AjaxIngresos
Se encarga de cargar un formulario para la modificacin de un Ingreso y si es
enviado, tambin maneja la modificacin en la base de datos.
<?php
class AjaxIngresos extends ajax{
function modificarIngreso(){
global $db;
$db->variable('id',getParameter('id'));
$consulta = $db->query('ingresos','id={id}');
$ingresos = $consulta[0];
$concepto = '';
$usuario = '';
$user = $db-
>union(array('u'=>'usuario','c'=>'casas'),array('c'=>'user','u'=>'id'),'u.id,u.nombre,
u.apellidos');
$usuario=lista($user,'id',array('nombre','apellidos'),$ingresos['user']);
$concept=$db->query('serviciosingresos');
93
$concepto=lista($concept,'id_servicio','nombreServicio'
,$ingresos['Concepto']);
$fpago=prettifyDate($ingresos['Fecha_Pago'],'dateCalendar');
$view = new view('modificaringresos','plugin',_Plugin);
$view->addparameter('id',$ingresos['id']);
$view-
>addparameter('recibo',$ingresos['numrecibo']);
$view->addparameter('inquilino',$usuario);
$view->addparameter('fpago',$fpago);
$view->addparameter('ref',$ingresos['Referencia']);
$view->addparameter('con',$concepto);
$view-
>addparameter('desc1',$ingresos['Descripcion1']);
$view-
>addparameter('desc2',$ingresos['Descripcion2']);
$view-
>addparameter('entrada',$ingresos['Entradas']);
$view->cargar();
}
function ModificadoIngreso(){
global $db;
$id = getParameter('id');
$fpago=$fechaFactura =
String2Date(getParameter('fpago'));
$array = array(
'numrecibo'=>getParameter('recibo'),
'Fecha_Pago'=>$fpago,
'Referencia'=>getParameter('ref'),
94
'Concepto'=>getParameter('con'),
'Descripcion1'=>getParameter('desc1'),
'Descripcion2'=>getParameter('desc2'),
'Entradas'=>getParameter('entrada'),
'user'=>getParameter('user')
);
$up=$db-
>update('ingresos',$array,array('row'=>'id','value'=>$id));
if($up){
echo 'La modificacion fue satisfactoria';
}else{
echo 'Tuvimos algun problema al modificar';
}
}
}
$AjaxIngresos = new AjaxIngresos();
$AjaxIngresos->select(getParameter('accion'));
?>
AjaxReportes
Se encarga de manejar los reportes que el usuario enva y enviar comentario
hacia ellos.
<?php
$html=new html;
class AjaxReportes extends ajax{
function insertar(){
global $db,$user;
95
$array=array(
'mensaje'=>getParameter('mensaje'),
'usuario'=>$usuario,
'tipo'=>getParameter('tipo'),
'fecha'=>time()
);
$id = $db->insert('reportes',$array);
$arlog=$array;
$arlog['id']=$id;
$log->insert('Insertar Reporte',serialize($arlog));
$db->variable('id',$id);
$consulta = $db->query('reportes','id={id}');
$reporte = $consulta[0];
$inq=$user->data($reporte['user']);
reporte_admin($reporte,$inq,$html);
}
function insertar_comentario(){
global $db,$user,$log;
$u=$user->data();
$usuario=$u['id'];
$array=array(
'reporte'=>$_POST['reporte'],
'user'=>$usuario,
'fecha'=>time(),
96
'comentario'=>$_POST['comentario'],
);
$id = $db->insert('reportes_comentarios',$array);
$arlog=$array;
$arlog['id']=$id;
$log->insert('Insertar Comentario Reporte',serialize($arlog));
$db->variable('id',$id);
$consulta = $db->query('reportes_comentarios','id={id}');
$comentario = $consulta[0];
reporte_comentario($comentario);
}
function status_reporte(){
global $db;
$db-
>update('reportes',array('status'=>$_POST['status']),array('row'=>'id','value'=>$
_POST['id']));
}
function comments(){
global $db;
$db->variable('id',$_POST['id']);
$consulta=$db->query('reportes_comentarios','reporte={id}');
foreach($consulta as $comentario){
reporte_comentario($comentario);
}
}
}
97
$AjaxReportes = new AjaxReportes();
$AjaxReportes->select(getParameter('accion'));
?>
AjaxSidebar
Se encarga de cargar todo lo que el sidebar tiene en su lista, cada vista que es
cargada directamente al darle click en un elemento del sidebar es manejado
por este archivo.
<?php
class AjaxSidebar extends ajax{
function Ingresos(){
global $db,$user;
$consulta = $db->query('ingresos');
$tabla = new
view('reportes_ingresos_tabla','plugin',_Plugin);
$rows = '';
$total=0;
foreach($consulta as $ingreso){
$row = new
view('reportes_ingresos_row','plugin',_Plugin);
$inq=data($ingreso['user']);
$row->addparameter('id',$ingreso['id']);
$row-
>addparameter('numrecibo',$ingreso['numrecibo']);
$row->addparameter('fecha',$ingreso['fecha']);
'.$inq['apellidos']);
$row->addparameter('nombre',$inq['nombre'].'
$row->addparameter('casa',$inq['casa']);
$row->addparameter('ref',$ingreso['Referencia']);
98
$row->addparameter('con',$ingreso['Concepto']);
$row-
>addparameter('desc1',$ingreso['Descripcion1']);
$row-
>addparameter('desc2',$ingreso['Descripcion2']);
$row-
>addparameter('FechaPago',$ingreso['Fecha_Pago']);
$row-
>addparameter('entrada',number_format($ingreso['Entradas'],2));
$rows.=$row->cargar(true);
$total=$total+((double)$ingreso['Entradas']);
}
$tabla->addparameter('row',$rows);
$tabla->addparameter('total',number_format($total,2));
$tabla->cargar();
}
function Egresos(){
global $db;
$consulta = $db->query('egresos');
$tabla = new
view('reportes_egresos_tabla','plugin',_Plugin);
$rows = '';
$total=0;
$file_js = new file_js();
$file_js-
>add(array('type'=>'plugin','plugin'=>_Plugin,'file'=>'egresos'));
$file_js->cargar();
foreach($consulta as $egreso){
99
$row = new
view('reportes_egresos_row','plugin',_Plugin);
$row-
>addparameter('fecha',$egreso['fecha_emisio']);
$row-
>addparameter('cheque',$egreso['numeroCheque']);
$row-
>addparameter('factura',$egreso['numeroFactura']);
$row-
>addparameter('ffactura',$egreso['fechaFactura']);
$row->addparameter('fcobro',$egreso['fechaCobro']);
$row-
>addparameter('proveedor',$egreso['nombreProveedor']);
$row->addparameter('con',$egreso['concepto']);;
$row-
>addparameter('desc1',$egreso['descripcion1']);
$row-
>addparameter('desc2',$egreso['descripcion2']);
$row-
>addparameter('egreso',number_format($egreso['egreso'],2));
$rows.=$row->cargar(true);
$total=$total+((double)$egreso['egreso']);
}
$tabla->addparameter('row',$rows);
$tabla->addparameter('total',number_format($total,2));
$tabla->cargar();
}
function CajaChica(){
global $db;
$view = new view('selectCajachica','plugin',_Plugin);
100
$view->cargar();
}
function inquilinos(){
global $db,$user;
$file_js = new file_js();
$file_js-
>add(array('type'=>'plugin','plugin'=>_Plugin,'file'=>'reportes'));
$file_js->cargar();
$tabla = $db-
>query('reportes','',array('table'=>'id','orden'=>'DESC'));
foreach($tabla as $reporte){
$inq=$user->data($reporte['user']);
reporte_admin($reporte,$inq);
}
}
function cargaDeudores(){
global $db;
$mes = getParameter('month');
$anio = getParameter('year');
$diaIni=mkti me(0,0,0,$mes,1,$anio);
$diaFin=mktime(23,0,0,$mes,date('t',$diaIni),$anio);
$consulta = $db-
>union(array('e'=>'casas','s'=>'usuario'),array('e'=>'user','s'=>'id'),'e.*,s.nombre,
s.apellidos');
$tabla = new
view('reportes_acumulado_deudores_tabla','plugin',_Plugin);
$debe=0;
$rows = '';
101
foreach($consulta as $deudas){
$row=new
view('reportes_acumulado_deudores_row','plugin',_Plugin);
$row-
>addparameter('user',$deudas['nombre'].' '.$deudas['apellidos']);
$row-
>addparameter('pagos',$deudas['pagos']);
$row-
>addparameter('deuda',$deudas['deuda']);
$row->addparameter('id',$deudas['id']);
$row->addparameter('casa',$deudas['casa']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function RecuperacionMantenimiento(){
global $db;
$mes = getParameter('month');
$anio = getParameter('year');
$diaIni=mkti me(0,0,0,$mes,1,$anio);
$diaFin=mktime(23,0,0,$mes,date('t',$diaIni),$anio);
$consulta = $db-
>union(array('e'=>'serviciosingresos','s'=>'ingresos'),array('e'=>'id_servicio','s'=>
'id'),'s.*,e.nombreServicio','s.concepto=1');
//$consulta = $db->query('ingresos','concepto=1');
$tabla = new
view('reportes_recuperacion_mantenimiento_tabla','plugin',_Plugin);
102
$debe=0;
$rows = '';
foreach($consulta as $recmantto){
$row=new
view('reportes_recuperacion_mantenimiento_row','plugin',_Plugin);
$row-
>addparameter('fecha',date('j/n/Y',$recmantto['fecha']));
$row-
>addparameter('numrecibo',$recmantto['numrecibo']);
$row-
>addparameter('Fecha_Pago',date('j/n/Y',$recmantto['Fecha_Pago']));
$row-
>addparameter('Referencia',$recmantto['Referencia']);
$row-
>addparameter('Concepto',$recmantto['nombreServicio']);
$row-
>addparameter('Descripcion1',$recmantto['Descripcion1']);
$row-
>addparameter('Descripcion2',$recmantto['Descripcion2']);
$row-
>addparameter('Entradas',$recmantto['Entradas']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function recuperacion_cuotas_extraordinaria(){
global $db;
$mes = getParameter('month');
103
$anio = getParameter('year');
$diaIni=mkti me(0,0,0,$mes,1,$anio);
$diaFin=mktime(23,0,0,$mes,date('t',$diaIni),$anio);
$consulta = $db-
>union(array('e'=>'serviciosingresos','s'=>'ingresos'),array('e'=>'id_servicio','s'=>
'id'),'s.*,e.nombreServicio','s.concepto=8');
//$consulta = $db->query('ingresos','concepto=8');
$tabla = new
view('reportes_recuperacion_cuotas_extraordinarias_tabla','plugin',_Plugin);
$debe=0;
$rows = '';
foreach($consulta as $recmantto){
$row=new
view('reportes_recuperacion_cuotas_extraordinarias_row','plugin',_Plugin);
$row-
>addparameter('fecha',date('j/n/Y',$recmantto['fecha']));
$row-
>addparameter('numrecibo',$recmantto['numrecibo']);
$row-
>addparameter('Fecha_Pago',date('j/n/Y',$recmantto['Fecha_Pago']));
$row-
>addparameter('Referencia',$recmantto['Referencia']);
$row-
>addparameter('Concepto',$recmantto['nombreServicio']);
$row-
>addparameter('Descripcion1',$recmantto['Descripcion1']);
$row-
>addparameter('Descripcion2',$recmantto['Descripcion2']);
$row-
>addparameter('Entradas',$recmantto['Entradas']);
$rows.=$row->cargar(true);
104
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function cuota_mantto_por_pagar(){
global $db;
$mes = getParameter('month');
$anio = getParameter('year');
$diaIni=mkti me(0,0,0,$mes,1,$anio);
$diaFin=mktime(23,0,0,$mes,date('t',$diaIni),$anio);
$consulta = $db-
>union(array('e'=>'serviciosingresos','s'=>'ingresos'),array('e'=>'id_servicio','s'=>
'id'),'s.*,e.nombreServicio','s.descripcion1="Liquidacion Cuota"');
$tabla = new
view('reportes_cuota_mantto_pagar_tabla','plugin',_Plugin);
$debe=0;
$rows = '';
foreach($consulta as $recmantto){
$row=new
view('reportes_cuota_mantto_pagar_row','plugin',_Plugin);
$row-
>addparameter('fecha',date('j/n/Y',$recmantto['fecha']));
$row-
>addparameter('numrecibo',$recmantto['numrecibo']);
$row-
>addparameter('Fecha_Pago',date('j/n/Y',$recmantto['Fecha_Pago']));
$row-
>addparameter('Referencia',$recmantto['Referencia']);
105
$row-
>addparameter('Concepto',$recmantto['nombreServicio']);
$row-
>addparameter('Descripcion1',$recmantto['Descripcion1']);
$row-
>addparameter('Descripcion2',$recmantto['Descripcion2']);
$row-
>addparameter('Entradas',$recmantto['Entradas']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function cuota_adelantada_saldo_afavor(){
global $db;
$mes = getParameter('month');
$anio = getParameter('year');
$diaIni=mkti me(0,0,0,$mes,1,$anio);
$diaFin=mktime(23,0,0,$mes,date('t',$diaIni),$anio);
$consulta = $db-
>union(array('e'=>'serviciosingresos','s'=>'ingresos'),array('e'=>'id_servicio','s'=>
'id'),'s.*,e.nombreServicio','s.descripcion1="Saldo a Favor"');
$tabla = new
view('reportes_cuota_mantto_saldoafavor_tabla','plugin',_Plugin);
$debe=0;
$rows = '';
foreach($consulta as $recmantto){
106
$row=new
view('reportes_cuota_mantto_saldoafavor_row','plugin',_Plugin);
$row-
>addparameter('fecha',date('j/n/Y',$recmantto['fecha']));
$row-
>addparameter('numrecibo',$recmantto['numrecibo']);
$row-
>addparameter('Fecha_Pago',date('j/n/Y',$recmantto['Fecha_Pago']));
$row-
>addparameter('Referencia',$recmantto['Referencia']);
$row-
>addparameter('Concepto',$recmantto['nombreServicio']);
$row-
>addparameter('Descripcion1',$recmantto['Descripcion1']);
$row-
>addparameter('Descripcion2',$recmantto['Descripcion2']);
$row-
>addparameter('Entradas',$recmantto['Entradas']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
}
function intereses_cuota_ordinaria(){
global $db;
$mes = getParameter('month');
$anio = getParameter('year');
$diaIni=mkti me(0,0,0,$mes,1,$anio);
$diaFin=mktime(23,0,0,$mes,date('t',$diaIni),$anio);
107
$consulta = $db-
>union(array('e'=>'serviciosingresos','s'=>'ingresos'),array('e'=>'id_servicio','s'=>
'id'),'s.*,e.nombreServicio','s.descripcion1="Cuota Ordinaria"');
$tabla = new
view('reportes_intereses_cuotas_ordinarias_tabla','plugin',_Plugin);
$debe=0;
$rows = '';
foreach($consulta as $recmantto){
$row=new
view('reportes_intereses_cuotas_ordinarias_row','plugin',_Plugin);
$row-
>addparameter('fecha',date('j/n/Y',$recmantto['fecha']));
$row-
>addparameter('numrecibo',$recmantto['numrecibo']);
$row-
>addparameter('Fecha_Pago',date('j/n/Y',$recmantto['Fecha_Pago']));
$row-
>addparameter('Referencia',$recmantto['Referencia']);
$row-
>addparameter('Concepto',$recmantto['nombreServicio']);
$row-
>addparameter('Descripcion1',$recmantto['Descripcion1']);
$row-
>addparameter('Descripcion2',$recmantto['Descripcion2']);
$row-
>addparameter('Entradas',$recmantto['Entradas']);
$rows.=$row->cargar(true);
}
$tabla->addparameter('row',$rows);
$tabla->cargar();
108
}
function CuotasExtra(){
}
function AcumuladaCoutaExtra(){
}
function inquilino(){
global $db,$user;
$casa = getParameter('casa');
echo '<script
type="text/javascript">alert("hola");</script>Hola';
$db->variable('casa',getParameter('casa'));
$user = $db-
>union(array('u'=>'usuario','c'=>'casas'),array('u'=>'id','c'=>'user'),'u.*,c.casa','c.c
asa={casa}');
$user = $user[0];
$view = new view('inquilino','plugin',_Plugin);
$view->addparameter('user',$user);
$view->cargar();
}
}
$AjaxSidebar = new AjaxSidebar();
$AjaxSidebar->select(getParameter('accion'));
?>
109
Usuario
Este modulo se encarga de usuarios, te permite insertar los diferentes tipos de
clientes, mostrar la lista y si deseas modificarlos te muestra un formulario listo
para ser modificado.
Ajax
<?php
class UsuarioAjax extends ajax{
function usuario(){
global $db;
$file_css = new file_css();
$file_css->add(array(
'file'=>'usuario',
'type'=>'plugins',
'plugin'=>_Plugin
));
$file_css->cargar();
$view = new view('usuarios','plugin',_Plugin);
$consulta = $db->query('grupos');
$grupos=lista($consulta,'id','nombre');
$view->addparameter('grupos',$grupos);
$view->cargar();
}
function lista(){
global $db;
$consulta = $db->query('usuario');
110
$list = '';
foreach($consulta as $cliente){
$user = new view('userlist','plugin',_Plugin);
$user->addparameter('id',$cliente['id']);
$user->addparameter('nombre',$cliente['nombre']);
$user->addparameter('apellidos',$cliente['apellidos']);
$user->cargar();
}
}
function detalles(){
global $db;
$db->variable('id',getParameter('id'));
$usuario= $db-
>union(array('u'=>'usuario','g'=>'grupos'),array('u'=>'group','g'=>'id'),'u.*,g.nombr
e as grupo','u.id={id}');
$us=$usuario[0];
$db->variable('id',$us['id']);
$casa = $db->query('casas','user={id}');
if(isset($casa[0])){
$casa=$casa[0];
$detalles = new view('cliente','plugin',_Plugin);
$detalles->addparameter('casa',$casa);
$detalles->addparameter('user',$us);
$detalles->cargar();
}else{
111
$detalles = new view('usuario','plugin',_Plugin);
$detalles->addparameter('user',$us);
$detalles->cargar();
}
}
function insertarUsuario(){
global $db,$log;
$group=getParameter('grupo');
$array = array(
'nombre'=>getParameter('nombre'),
'apellidos'=>getParameter('apellidos'),
'login'=>getParameter('login'),
'password'=>getParameter('pass'),
'mail'=>getParameter('mail'),
'group'=>$group,
);
print_r($array);
$id=$db->insert('usuario',$array);
$arlog=$array;
$arlog['id']=$id;
$log->insert('Insertar Usuario',serialize($arlog));
112
if($group==4){
$casa = array(
'user'=>$id,
'pagos'=>getParameter('pagos'),
'deuda'=>getParameter('deuda'),
'casa'=>getParameter('casa')
);
$casid=$db->insert('casas',$casa);
$caslog=$casa;
$caslog['id']=$casid;
$log->insert('Insertar Casa',serialize($arlog));
}
$db->variable('id',$id);
$cliente = $db->query('usuario','id={id}');
$cliente=$cliente[0];
$user = new view('userlist','plugin',_Plugin);
$user->addparameter('id',$cliente['id']);
$user->addparameter('nombre',$cliente['nombre']);
$user->cargar();
}
function enviarModificar(){
113
global $db;
$group=getParameter('group');
$id=getParameter('id');
$array = array(
'nombre'=>getParameter('nombre'),
'apellidos'=>getParameter('apellidos'),
'login'=>getParameter('login'),
'password'=>getParameter('password'),
'mail'=>getParameter('mail'),
'group'=>$group
);
$upus=$db-
>update('usuario',$array,array('row'=>'id','value'=>$id));
$upcasa='';
if($group==4){
$casa=array(
'pagos'=>getParameter('pagos'),
'deuda'=>getParameter('deuda'),
'casa'=>getParameter('casa'),
);
$upcasa=$db-
>update('casas',$casa,array('row'=>'user','value'=>$id));
}
if($upus){
echo 'Se ha modificado con exito';
}else{
114
echo 'Tuvimos un problema al modificarlo';
}
}
function modificarUsuario(){
global $db;
$db->variable('id',getParameter('id'));
$consulta=$db->query('usuario','id={id}');
$user=$consulta[0];
$grupo=$db->query('grupos');
$group=lista($grupo,'id','nombre',$user['group']);
$db->variable('user',$user['id']);
$casa=$db->query('casas','user={user}');
$view = new view('usuarioModificar','plugin',_Plugin);
$view->addparameter('user',$user);
$view->addparameter('group',$group);
if(isset($casa[0])){
$casa=$casa[0];
$view->addparameter('casa',$casa['casa']);
$view->addparameter('pagos',$casa['pagos']);
$view->addparameter('deuda',$casa['deuda']);
}else{
$view->addparameter('casa','');
$view->addparameter('pagos','');
$view->addparameter('deuda','');
}
115
$view->cargar();
}
}
$UsuarioAjax = new UsuarioAjax;
$UsuarioAjax->select(getParameter('accion'));
?>
6.2 Controller
Esta capa est definida en una carpeta con el mismo nombre en la carpeta
principal, su funcin es manejar el sistema central del sistema. Es el conjunto
de clases que sirve para ir construyendo el sistema e ir procesando todas las
peticiones que se realizan al proyecto.
6.2.1 Ajax
Esta clase se usa para heredarla y asi poder crear una forma de que el sistema
pueda interactuar con tu ajax.
Select
Este mtodo sirve para recibir como va a reaccionar el archivo Ajax que se
emplean en los proyectos. Este mtodo responde llamando a la funcin que se
esta empleando.
Parmetros
$condition Es la condicin que ser utilizada para llamar la funcin
<?php
/**
* Clase Ajax
*
* Manejo de Carga de Metodos en Ajax
*
* Maneja la carga de los metodos
* en los archivos ajax, que sirven para
116
* la entrega de informacion
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
class ajax extends IzanamiController{
/**
* Este metodo sirve para recibir como va a reaccionar el archivo Ajax
* que se emplean en los proyectos. Este metodo responde llamando a la
* funcion que se esta empleando.
*
* @param string $condition esto recibe la condicion
*/
Public function select($condition){
if(method_exists($this, $condition)){
accion
//Aqui se llama al metodo de la llamada para activar la
$this->$condition();
}
}
}
?>
117
6.2.2 Control
Esta clase se denomina el ncleo del sistema, esta clase es el encargado de
cargar las distintas capas, y hacer la relacin entre ellas. Su funcin principal
es hacer las conexiones, y cargar todos los archivos de configuracin. Esta
misma clase a su vez depende de una clase llamada load.
Cargar
Este mtodo se encarga de llamar la clase load la cual se encarga de entregar
la direccin de un archivo segn los parmetros dados, y asi cargar ese archivo
para el uso de las clases o funciones que contiene.
Parmetros
$archivo El nombre del archivo sin formato
$folder La capa en la que se encuentra el archivo
$extra Una carpeta extra o dato extra para localizar el archivo
Regreso
Si la variable $return es true, se regresa el contenido del archivo, de lo
contrario simplemente se muestra el contenido.
Funcin
Este mtodo llama a una funcin en caso de ser necesaria.
Parmetros
$nombre Es el nombre de la funcin que se quiere ser llamada
$parameter El conjunto de parmetros que se necesitan en un arreglo
$back Defines si el resultado ser mostrado o regresado
Contenido
Este mtodo se encarga de manejar el contenido, y este mtodo muestra cierta
cantidad de contenido segn es pedido.
Sidebar
Este mtodo es parecido a contenido, pero esta llama el contenido de las
barras de la derecha del contenido. Este mtodo llama los sidebar de los
mdulos en caso de ser accedido al modulo, en caso de no existir, se llama al
sidebar de la Vista o App.
118
Plugin
Este mtodo crea un objeto para que sidebar y contenido pueda acceder al
contenido y el sidebar de los mdulos.
Redirect
Este mtodo responde a las peticiones de la Aplicacin, y enva a contenido
segn se la informacin que se ha pedido.
Get Redirect Dir
Este mtodo se usa para obtener la direccin de la carpeta y as poder
cargarla.
Frontend
Este mtodo es simple, regresa el contenido por default en caso de que no
hayas hecho ninguna peticin. Este contenido es presentado cuando entras a
la Aplicacin.
<?php
/**
* Clase Cargar
*
* Manejo de Carga de Archivos
*
* Maneja la carga de los archivos
* Crea las dirreciones a diferentes
* archivos de las tres capas.
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
119
class load{
private $path_model;
private $path_control;
private $path_plugin;
private $path_index;
private $archivo;
private $folder;
private $extra;
/**
* El contructor de la clase, esta obtiene los valores de el archivo.
*
cargar
* @param string $archivo Obtiene el nombre del archivo que vas a
* @param string $folder Obtienes el parametro que se usara para
diferenciar la capa que se usara
* @param string $extra Obtienes el parametro para cargar la carpeta de
alguna de las capas
*/
function load($archivo,$folder,$extra){
$this->archivo=$archivo;
$this->folder=$folder;
$this->extra=$extra;
}
/**
* Esta funcion sirve para decirle donde esta la carpeta Mode
*
120
* @param string $path Localizacion de carpeta Model
*/
function set_path_model($path){
$this->path_model=$path;
}
/**
* Esta funcion sirve para decirle donde esta la carpeta Controller
*
* @param string $path Localizacion de carpeta Controller
*/
function set_path_control($path){
$this->path_control=$path;
}
/**
* Esta funcion sirve para decirle donde esta la carpeta de los Plugins para
cargar modulos
*
* @param string $path Localizacion de carpeta Modules
*/
function set_path_plugin($path){
$this->path_plugin=$path;
}
/**
* Esta funcion sirve para decirle donde esta la carpeta usada como
modulo de inicio
*
121
* @param string $path Localizacion de carpeta Inicio
*/
function set_path_index($path){
$this->path_index=$path;
}
/**
* Esta funcion sirve para decirle donde esta la carpeta Application
*
* @param string $path Localizacion de carpeta de la Application
*/
function set_path_app($path){
$this->path_app=$path;
}
/**
* Tomando los datos arriba cargados esta funci on crea la direccion para
* que la funcion cargar en control.php pueda cargar el archivo y presentar
* el resultado
*/
function dir(){
global $CFG;
$folder=$this->folder;
$archivo=$this->archivo;
$extra=$this->extra;
$f = explode(':', $folder);
$dir = '';
122
if ($archivo == 'index') {
$dir = $CFG['path'] . DS . $CFG['dirapp'] . DS . 'modules' . DS .
$folder . DS;
} else {
if (count($f) > 1) {
$dir = $f[0] . '/';
} else {
switch ($folder) {
case 'model':
$dir=$this->path_model;
break;
case 'control':
$dir=$this->path_control;
break;
case 'plugin':
if (!empty($extra)) {
$dir=$this->path_plugin . $this->extra . DS;
} else {
$dir=$this->path_plugin;
}
break;
case 'app':
$dir = $this->path_app;
break;
case 'vista':
$dir = $this->path_app.$this->extra.DS;
123
break;
default:
echo '<font color="green">' . $folder . ' - Por favor, usa el
cargador adecuado.</font>';
break;
}
}
}
return $dir;
}
}
/**
* Core
*
* Manejo de Carga de Archivos
*
* Maneja la carga de los archivos
* Crea las dirreciones a diferentes
* archivos de las tres capas.
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
class core {
124
private $plugin;
/**
* Esta funcion carga un archivo que le des dependiendo de los valores a
enviar
*
* @return string El contenido de el archivo pedido
* @param string $archivo El nombre del archivo sin formato
* @param string $folder La capa en la que se encuentra el archivo
* @param string $extra Una carpeta extra o dato extra para localizar el
archivo
* @param boolean $return Defines si sera regresado como una variable o
se imprimira directo
*
*/
public function cargar($archivo, $folder='', $extra='', $return=true) {
global $CFG;
//Aqui es llamada la clase load que se encarga de dar las direcciones de
los archivos
$load = new load($archivo,$folder,$extra);
$load->set_path_model($CFG['path'] . DS . $CFG['dirmodel'] . DS);
$load->set_path_control($CFG['path'] . DS . $CFG['dircontrol'] . DS);
$load->set_path_plugin($CFG['path'] . DS . $CFG['dirapp'] . DS .
'modules' . DS,$extra);
$load->set_path_app($CFG['path'] . DS . $CFG['dirapp'] . DS);
$load->set_path_index($CFG['path'] . DS . $CFG['dirapp'] . DS .
'modules' . DS . $folder . DS);
$dir=$load->dir();
ob_start();
125
if (dev_mode()) {
$include = $dir . $this->archivo($archivo, $dir);
} else {
$include = $dir . $archivo . '.php';
}
if (file_exists($include)) {
include($include);
} else {
$back=false;
}
$back = ob_get_clean();
if ($return)
return $back;
else
echo $back;
}
/**
* Esta funcion recorre la carpeta para obtener el nombre y el formato
*
* @return string Regresa el nombre con formato (Ej. archivo.php)
* @param string $nombre recibe el nombre del archivo
* @param string $folder La direccion de la carpeta del archivo
*/
private function archivo($nombre, $folder) {
$array = files($folder);
126
if(file_exists($folder)){
foreach ($array as $files) {
if ($nombre == $files[0]) {
return $files[0] . '.' . $files[1];
}
}
}
return false;
}
/**
* Esta funcion sirve para llamar a una funcion cualquiera
*
* @param string $nombre Este es el nombre de la funcion
* @param string $parameter los parametros de la funcion
* @param boolean $back Defines si el resultado sera mostrado o
regresado
*/
public function funcion($nombre, $parameter, $back=false) {
$return = call_user_func_array($nombre, $parameter);
if ($back) {
return $return;
} else {
echo $return;
}
}
/**
127
* Manejador del Contenido del framework
*
* @return string Regresa todo el archivo para su uso en el app.php
*/
public function contenido() {
global $CFG;
switch (true) {
case(is_home()):
$return = $this->frontend();
break;
default:
$return = $this->redirect();
break;
}
return optimizar($return);
}
/**
* Manejador de la barra de los extremos
*
* @return string Regresa el contenido del sidebar, tanto por default como
de los plugins
*/
public function sidebar(){
$get=getParameter('ap');
if(!empty($get)){
$modulo_dir=$this->get_redirect_dir($get);
128
$folder=$modulo_dir;
if(empty($this->plugin)){
$this->plugin($folder);
}
$plugin = $this->plugin;
$sidebar = $this->cargar('sidebar','plugin',$modulo_dir);
}else{
$sidebar = $this->cargar('sidebar','app');
}
if($sidebar){
return $sidebar;
}
return false;
}
private function plugin($folder){
$this->plugin = new plugin($folder);
}
/**
* Esta funcion maneja las redirrecciones para mostrar los modulos en
contenido
*
* @return string Regresa el contenido a mostrarse si se usa un modulo o
en caso contrario el mensaje de error en caso que el modulo no exista
*/
129
public function redirect() {
global $CFG,$db;
$red = new ModelRedirect;
$redir = $red->getRedirect(getParameter($CFG['redir']));
$type = $redir['type'];
$value = $redir['value'];
switch($type){
case 'module':
$mod = new ModelModules;
$modulo_item = $mod->getModule($redir);
$archivo = $modulo_item['archivo'];
$folder = $modulo_item['folder_name'];
if(empty($this->plugin)){
$this->plugin($folder);
}
$plug = $this->plugin;
if(!empty($archivo)){
$file = $archivo;
}else{
$file = $folder;
}
if($plug->exist()){
$return = $this->cargar($file, 'plugin',$folder,true);
130
}else{
$return = _e('plugin_no_exists');
}
break;
default:
$error404 = new view('404');
$return = $error404->cargar(true);
break;
}
return $return;
}
/**
* Se usa para obtener la carpeta a donde envia la redireccion...
*
* @return string Regresa el nombre de el modulo
* @param string $par Valor de la redireccion
*/
public function get_redirect_dir($par){
global $db;
$red = new ModelRedirect;
$modulo = $red->Redirect2Module($par);
return $modulo;
}
/**
* Muestra el contenido de el archivo de inicio en el lugar del contenido
131
*
* @return string Regresa el contenido para ser usado
*/
function frontend() {
$return = $this->cargar('index', 'index');
return $return;
}
}
class IzanamiController{
}
?>
6.2.3 Log
Esta clase es la encargada de guardar las acciones que los usuarios realizan
en el sistema.
Insert
Este mtodo es usado para insertar en la tabla del log de la base de datos, este
guarda la accin conectada al usuario y al grupo que lo realizo.
Parmetros
$idaccion Es un Cdigo de identificacin de la accin
$detalleaccion Es la accin detallada, en muchos casos son los datos de
accin serializados
Regreso
Se regresa el nmero de identificacin de la llave primaria de la tabla de
registro insertado.
Get User Log
Este metodo puede ser usado para obtener una lista de registros en el log que
corresponden a un usuario.
132
Parmetros
$user Es el usuario del que quieres obtener el log
Regreso
Regresa el arreglo multidimensional del que est constituido esa consulta.
Get Group Log
Este mtodo puede ser usado para obtener una lista de registros en el log que
corresponden a un grupo.
Parmetros
$group Es el grupo del que quieres obtener el log
Regreso
Regresa el arreglo multidimensional del que est constituida esa consulta.
Get Action Log
Este mtodo puede ser usado para obtener una lista de registros en el log que
corresponden identificador de una accion.
Parmetros
$value Es el valor que ser el identificador que desees.
Regreso
Regresa el arreglo multidimensional del que est constituido esa consulta.
<?php
/**
* Clase Seguimiento
*
* Manejo de Seguimiento
*
* Maneja la interacion de los usuarios
* con el sistema, y hace una guardado
133
* de las acciones que ellos hacen en el.
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
class log{
/**
* El metodo usado para insertar en la base de datos del log, este guarda la
accion
* conectada al usuario y al grupo que lo realizo.
*
* @param string $idaccion Es un Titulo de Identificacion de la accion
* @param string $detalleaccion La accion detallada, en muchos casos son
los datos de accion serializados
*/
function insert($idaccion,$detalleaccion){
global $db,$user;
$u=$user->data();
$usID=$u['id'];
$usNombre=$u['nombre'].','.$u['apellidos'];
$g=$user->group();
$groupID=$g['id'];
$groupName=$g['nombre'];
134
if(is_array($detalleaccion)){
$detalleaccion=serialize($detalleaccion);
}
$insert = array(
'fecha'=>time(),
'userID'=>$usID,
'userNombre'=>$usNombre,
'groupID'=>$groupID,
'groupNombre'=>$groupName,
'idaccion'=>$idaccion,
'detalleaccion'=>$detalleaccion
);
$id=$db->insert('log',$insert);
return $id;
}
/**
* El metodo usado para insertar en la base de datos del log, este guarda la
accion
* conectada al usuario y al grupo que lo realizo.
*
* @param string $idaccion Es un Titulo de Identificacion de la accion
* @param string $detalleaccion La accion detallada, en muchos casos son
los datos de accion serializados
*/
function getUserLog($user){
global $db;
135
$db->variable('usuario',$user);
$consulta = $db->query('log','userID={usuario} OR
userNombre LIKE "{usuario}"');
return $consulta;
}
function getGroupLog($group){
global $db;
$db->variable('grupo',$group);
$consulta = $db->query('log','group="{grupo}"');
return $consulta;
}
function getActionLog($value){
global $db;
$db->variable('accion',$value);
$consulta = $db->query('log','idaccion LIKE "{accion}"');
return $consulta;
}
}
?>
6.2.4 Plugin
Esta clase fue diseada para un mejor manejo tanto de los plugins como de los
mdulos, dado varias funciones para su uso.
Exist
Este mtodo es usado para saber si el plugin o modulo existe.
Regreso
Regresa verdadero o falso, segn existiera o no este modulo.
136
Ajax
Este mtodo es usado cuando se usa ajax, para responder de distinta manera
a estas peticiones.
Cargar
Este mtodo es usado para cargar el modulo que es necesario dependiendo
las peticiones que mandes a llamar.
<?php
/**
* Plugin
*
* Manejo de Plugins
*
* Esta clase fue diseada para un mejor manejo tanto
* de los plugins como de los modulos, dando varias funciones
* para su uso.
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
class plugin extends IzanamiController{
private $plugin;
public function construct($value){
$this->plugin($value);
}
137
public function plugin($value){
$this->plugin=$value;
define('_Plugin',$value);
$this->Agregados();
}
public function exist(){
global $db;
$modulo = new ModelModules();
$count = $modulo->pluginExists($this->plugin);
if ($count > 0) {
return true;
} else {
return false;
}
}
public function ajax(){
global $CFG,$core,$user,$db;
$dirapp=$CFG['path'].DS.$CFG['dirapp'].DS.$CFG['dirplugin'];
$plugin=$dirapp.DS.$this->plugin.DS;
$include=$plugin.getParameter('file').'.php';
if(file_exists($include)){
include($include);
}
}
138
public function cargar(){
global $CFG,$core,$user,$db;
$dirapp=$CFG['path'].DS.$CFG['dirapp'].DS.$CFG['dirplugin'];
$plugin=$dirapp.DS.$this->plugin.DS;
$include=$plugin.getParameter('file').'.php';
if(file_exists($include)){
include($include);
}
}
private function Agregados(){
global $CFG;
$dirapp=$CFG['path'].DS.$CFG['dirapp'].DS.$CFG['dirplugin'];
$plugin=$dirapp.DS._Plugin.DS;
$control = $plugin.$CFG['ProjectFolderControl'];
$func = $plugin.$CFG['ProjectFolderModel'];
cargar_file($control);
cargar_file($func);
}
}
?>
139
6.2.5 Seguridad
Es una clase usada para la seguridad de los datos.
1.1.1. Encriptar
Este mtodo es usado para poder proteger cierto dato, usando a su vez una
palabra a la cual llamamos token con la cual se transforma el dato.
Parmetros
$valor Este es el valor a encriptar
$token Este es la contrasea con la que se oculta el $valor, por defecto es
usado 123456
Desencriptar
Este mtodo es usado para poder devolver el dato a su estado normal y legible,
usando la misma palabra con la cual fue encriptado, si t usas otra palabra,
este texto queda ilegible.
Parmetros
$valor Este es el valor a encriptar
$token Este es la contrasea con la que se oculta el $valor, por defecto es
usado 123456
<?php
/**
* Seguridad
*
* Manejo de Seguridad
*
* Esta clase fue diseada para un crear una
* capa entre las entradas y salidas de informacion
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
140
*
* @package Izanami_Controller_Classes
*/
class seguridad extends IzanamiController{
public function encrypt($valor,$token='123456'){
$result = '';
for($i=0; $i<strlen($valor); $i++) {
$char = substr($valor, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
public function decrypt($valor,$token='123456'){
$result = '';
$string = base64_decode($valor);
for($i=0; $i<strlen($valor); $i++) {
$char = substr($valor, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}
141
}
?>
Usuario
Esta clase controla todas las referencias a los usuarios en el sistema, dando un
control completo al desarrollador de poder administrar al usuario.
Login
Este mtodo realiza la conexin de un usuario usando los datos guardados en
la tabla de definida por defecto en el sistema. Este mtodo crea una cookie con
el nombre user para guardar el ID del usuario conectado.
Parmetros
$uname Es el Nombre de Usuario de el Usuario que est intentando acceder
$password Es la contrasea de el usuario que esta intentando acceder
$remember Es true, se considera que el usuario desea ser recordado y se
marca un tiempo de 30 das para guardar la Cookie.
Regresa
Este mtodo regresa 3 valores dependiendo el estado, en este caso son
nmeros:
1) Si todo procedi con normalidad y el usuario se conecto
2) Si el Nombre de usuario y/o la contrasea no son las adecuadas, y el
usuario es rechazado
0) Si se intenta enviar el nombre de usuario y/o la contrasea vacas.
Logout
Este mtodo toma el cookie creado en el mtodo login y borra el cookie, asi el
sistema declara al usuario desconectado.
Regreso
Regresa true (boolean) si el usuario fue correctamente desconectado y false
(boolean) si hubo algn problema al desconectarlo. Entre los problemas al
regresar false (boolean), puede ser simplemente visitar este mtodo sin un
usuario conectado o por alguna razn la cookie sigue estando despus de
haber realizado la destruccin de ella.
142
insertUser
Este mtodo recibe los datos de los usuarios e inserta al usuario. Este mtodo
nos es obligatorio para insertar un Usuario, puede ser usado cualquier mtodo
ya que no hay restricciones para el acceso a las bases de datos del sistema.
Parmetros
$nombre Es el Nombre del usuario
$apellidos Es el Apellido del usuario
$login Es el nickname del usuario
$password Es la contrasea del usuario
$grupo Es el numero de identificacin del usuario conforme a el grupo
$mail Es el correo electrnico del usuario
Regreso
Este mtodo regresa el nmero de identificacin del usuario insertado
randomPass
Este mtodo crea una contrasea aleatoria en caso de que no se quiera
otorgar una contrasea.
Parmetros
$length es el tamao de la contrasea
$chrs los caracteres permitidos para crear la contrasea
Regreso
Este mtodo regresa la contrasea creada y lista para ser usada.
Data
Este mtodo usando una id o nombre de usuario te da los datos del usuario
que estas pidiendo.
Parmetros
$user El usuario del que deseas obtener informacin. Si este parmetro no es
dado, se toma el usuario que est conectado.
Regreso
143
Regresa los datos del usuario pedido en un arreglo o en caso contrario se
regresa un false(boolean)
Group
Este mtodo sirve para obtener el grupo de cierto usuario, y para esto se le da
un id o un nombre de usuario.
Parmetros
$user Es el nombre de usuario o id del usuario que deseas obtener el grupo.
Regreso
Este mtodo regresa un arreglo con el contenido del grupo al que pertenece el
usuario.
Exists
Este mtodo verifica si el usuario que estas envindole en los parmetros
existe en la base de datos.
Parmetros
$ user Es el nombre de usuario o id del usuario que deseas obtener el grupo.
Regreso
Regresa true (boolean) si el usuario existe o false(boolean) si no encontr
algn usuario con esos datos.
<?php
class sessiones{
var $session=false;
Public function sessiones($session=false){
if($session){
$this->session=true;
session_start();
}
144
}
Public function set($name,$value,$expire=''){
if($this->session){
$this->set_session($name, $value);
}else{
$this->set_cookie($name, $value, $expire);
}
}
Public function destroy($name){
if($this->session){
$this->destroy_session($name);
}else{
$this->destroy_cookie($name);
}
}
Public function get($name){
if($this->session){
$return = $this->get_session($name);
}else{
$return = $this->get_cookie($name);
}
return $return;
}
145
Private function set_cookie($name,$value,$expire){
if(!isset($_COOKIE[$name])){
setcookie($name, $value);
}
}
Private function destroy_cookie($name){
if(isset($_COOKIE[$name])){
setcookie($name, '', time()-3600);
}
}
Private function get_cookie($name){
if(isset($_COOKIE[$name])){
return $_COOKIE[$name];
}else{
return false;
}
}
Private function set_session($name, $value){
$_SESSION[$name]=$value;
}
Private function destroy_session($name){
unset($_SESSION[$name]);
}
146
Private function get_session($name){
return $_SESSION[$name];
}
}
/**
* User
*
* Manejo de usuarios
*
* Administra a los Usuarios y las Conexiones de estos
* Existen funciones para crear contraseas aleatorias y mas
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
class user extends IzanamiController {
/**
* Esta funcion crea la conexion y en todo caso la Cookie o Session
dependiendo de que se haya declarado
*
* @return int Regresa 1 si es Correcto, 2 Si el usuario no existe y 0 si hay
problemas con los datos
* @param string $uname es el nombre de usuario
* @param string $password es la contrasea del usuario
147
* @param boolean $remember esta opcion esta ahi por si se desea que
se recuerde la conexion para futuros dias
*
*/
function login($uname, $password, $remember = false) {
global $CFG,$db;
if (!empty($uname) && !empty($password)) {
$us = $db->query('usuario',"login='$uname' AND
password='$password'");
if (count($us) > 0) {
if ($remember) {
$expire = time() + $this->dias(30);
} else {
$expire = 0;
}
$cookies = new sessiones();
$cookies->set('user', $uname, $expire);
return 1;
} else {
return 2;
}
} else {
return 0;
}
}
148
/**
* Esta funcion Destruye la Cookie o Session creada para la conexion del
usuario
*
* @return boolean true si se destruyo y el usuario esta desconectado
*
*/
function logout() {
$cookie = getParameter('user', 'cookie');
if (!empty($cookie)) {
$cookies = new sessiones;
$cookies->destroy('user');
$new=getParameter('user', 'cookie');
if(!empty($new)){
return false;
}
return true;
} else {
return false;
}
}
/**
* Esta funcion sirve para crear crear
*
* @return string El contenido de el archivo pedido
149
* @param string $nombre Es el nombre que tendra el usuario en el
sistema
* @param string $login Es el nombre de usuario con el que se va a
identificar
* @param string $password Es la contrasea que el usuario necesita para
conectarse
* @param string $grupo Es el grupo al que pertenecera el usuarios
*
*/
function insertUser($nombre,$apellidos,$login,$password,$grupo,$mail) {
global $db;
$array=array(
'nombre'=>$nombre,
'apellidos'=>$apellidos,
'login'=>$login,
'password'=>$password,
'group'=>$grupo,
'mail'=>$mail
);
return $db->insert('usuario',$array);
}
/**
* Crea una contrasea aleatoria en caso de que no se quiera dar una
*
* @return string La contrasea creada
150
* @param int $length Es el tamao de la contrasea en caracteres[Por
defecto 10]
* @param string $chrs Son los caracteres usados para crear la
contrasea[Por defecto: Numeros y Abcedario Ingles(sin )]
*
*/
function randomPass($length=10, $chrs =
'1234567890qwertyuiopasdfghjklzxcvbnm') {
for ($i = 0; $i < $length; $i++) {
$pwd .= $chrs{mt_rand(0, strlen($chrs) - 1)};
}
return $pwd;
}
/**
* Regresa los datos de un usuario
*
* @return array Datos del usuario
* @param mi xed $user nombre de usuario o id del usuario para obtener
los datos, en caso de no existir toma al usuario que esta conectado.
*
*/
function data($user='') {
global $db;
if (empty($user)) {
$u = getParameter('user', 'cookie');
$user = $u;
151
}
if (is_numeric($user)) {
$where = "id=$user";
} else {
$where = "login='$user'";
}
$us = $db->query('usuario', $where);
if ($us) {
return $us[0];
} else {
return false;
}
}
/**
* Obtiene informacion sobre el grupo del usuario
*
* @return array Datos del grupo del usuario
* @param mi xed $user Nombre de usuario o Id del usuario, para obtener
datos del grupo al que pertenece, en caso de no existir, toma al usuario
conectado
*
*/
function group($user=''){
$db = new database();
$db->conn();
if (empty($user)) {
152
$u = getParameter('user', 'cookie');
$user = $u;
}
if (is_int($user)) {
$where = "id=$user";
} else {
$where = "login='$user'";
}
$us = $db->query('usuario', $where);
$us=$us[0];
$group=$us['group'];
$g= $db->query('grupos',"id=$group");
if ($us) {
return $g[0];
} else {
return false;
}
}
/**
* Verifica si el usuario existen en la base de datos
*
* @return boolean true En caso de que el usuarios exista
* @param mixed $user Nombre de usuario o ID del usuario, en caso de no
existir, se toma al usuario conectado.
*
153
*/
function Exists($user=''){
if(empty($user)){
$ses=new sessiones();
$user=$ses->get('user');
}
$data=$this->data($user);
if($data){
return true;
}else{
return false;
}
}
/**
* transforma horas a segundos para su uso en cookies
*
* @return int Segundos
* @param int $numero Horas
*
*/
function hora($numero=1) {
return $numero * (3600);
}
/**
* Transforma dias a segundos para su uso en cookies
154
*
* @return int Segundos
* @param int $numero Dias
*
*/
function dias($numero=1) {
return $numero * (3600 * 24);
}
}
?>
6.2.7 Funciones
Es el conjunto de funciones que el desarrollador puede utilizar en el dentro de
el desarrollo de algn proyecto. Estas funciones son usadas tambin dentro del
mismo sistema para mejorar los procesos.
Fechas
Obtener_hasta
Le das una fecha en formato unix, y es comparada con la fecha actual para as
obtener un formato para la fecha ms agradable a la vista.
Parmetros
$fecha Es un conjunto de 11 numero en formato UNIX
Regreso
Regresa la fecha en formato ejemplo: hace 6 mins.
PrettifyDate
Esta funcin obtiene una fecha en formato UNIX y con eso regresar la fecha en
un formato ms agradable
155
Parmetros
$time fecha en formato UNIX
$format obtienes que te va a regresar la funcin
Regreso
Este mtodo regresa una fecha ms agradable a la vista, para las personas.
<?php
function obtener_hasta($fecha) {
$f = time() - $fecha;
$seg = $f; //Segundos
$min = $seg / 60; //Minutos
$hora = $min / 60; //Horas
if ($hora > 1 && $hora < 24) {
$fecha = 'hace ';
$hora = ceil($hora);
$fecha.=($hora > 1) ? $hora . ' horas' : $hora . ' hora';
} else if ($seg > 60 && $min < 60) {
$fecha = 'hace ';
$min = ceil($min);
$fecha.=($min > 1) ? $min . ' mins' : $min . ' min';
} else if ($seg < 60) {
$fecha = 'hace ';
$seg = ceil($seg);
$fecha.=($Seg > 1) ? $seg . ' Segs' : $seg . ' seg';
} else {
$fecha = date('j/n/Y H:i', $fecha);
156
}
return $fecha;
}
function prettifyDate($time,$format='datetime'){
global $meses,$lang;
$dia=date('j',$time);
$mes=$meses[date('n',$time)];
$year=date('Y',$time);
$hora=date('g:i A',$time);
switch($format){
case 'dateCalendar':
$return=date('j/m/Y',$time);
break;
case 'date':
$return=$dia.' '.$lang['the'].' '.$mes.' '.$lang['the'].' '.$year;
break;
case 'datetime':
$return=$dia.' '.$lang['the'].' '.$mes.' '.$lang['the'].' '.$year.' '.$hora;
break;
}
return $return;
}
function String2Date($date){
list($day,$month,$year)=explode('/',$date);
return mktime(0,0,0,$month,$day,$year);
157
}
?>
Archivos
Files
Esta funcin escanea un directorio y as regresa la lista de los archivos de la
carpeta. Esta funcin divide dependiendo de el parmetro $only el escaneo
para solo archivos o solo dir, o por el contrario si quieres toda la lista.
Parmetros
$dir Es la direccin del directorio que queremos listar
$only Es el tipo de archivos que quieres listar. Archivos, Directorios o Todo.
Regreso
Esta funcin regresa la lista en un arreglo de lo que contiene el directori o
solicitado segn los parametros.
<?php
function files($dir, $only='') {
$array = array();
$dir = (isset($dir)) ? $dir : "/";
if(file_exists($dir)){
$directorio = opendir($dir);
while ($archivo = readdir($directorio)) {
switch ($only) {
case'file':
if ($archivo != '.' && $archivo != '..') {
if (is_file($dir . '/' . $archivo)) {
$array[] = explode('.', $archivo);
}
158
}
break;
case'dir':
if ($archivo != '.' && $archivo != '..') {
if (is_dir($dir . '/' . $archivo)) {
$array[] = explode('.', $archivo);
}
}
break;
default:
if ($archivo != '.' && $archivo != '..') {
$array[] = explode('.', $archivo);
}
break;
}
}
closedir($directorio);
}else{
return false;
}
return $array;
}
?>
Atrib
Le envas una lista de atributos que necesitas que un tag tenga, y el formatea
la lista para que quede en un formato HTML.
159
Parametros
$array es la lista de todos los atributos
$non es la lista de los atributos que quieras omitir
Regreso
Regresa una lnea en fomato HTML lista para agregarla a un tag.
<?php
function attr($array, $non=array()) {
$var = '';
if (is_array($array)) {
foreach ($array as $par => $val) {
if (search_array($par, $non)) {
if (is_int($par)) {
$var.=' ' . $val . ' ';
} else {
$var.=' ' . $par . '="' . $val . '" ';
}
}
}
}
return $var;
}
?>
160
Listas
Crea una lista para los select en HTML, usando un arreglo.
Parmetros
$array el areglo a ser usado para crear la lista.
$value el campo que ser declarado como el valor de la eleccin
$text el texto mostrado de cada tem
$select es el valor que ser seleccionado.
Regreso
Regresa la lista en HTML lista para ser utilizada en las vistas.
<?php
function lista($array,$value,$text,$select=''){
$lista = '';
foreach($array as $item){
if(is_array($text)){
$t=array();
foreach($text as $data){
$t[]=$item[$data];
}
$texto = implode(' ',$t);
}else{
$texto = $item[$text];
}
$valor=(isset($item[$value]))?$item[$value]:'';
$selected = ($select==$valor)?' selected ':'';
161
$lista.='<option value="'.$valor.'"'.$selected.'>'.$texto.'</option>';
}
return $lista;
}
?>
Get_Men
Esta funcin regresa los tems del men que estas solicitando.
Parmetros
$name Es el nombre de el Menu
$class son las clases CSS para los tems.
$view Es la vista que ser utilizada para cargar los tems.
Regreso
Regresa todo formateado y listo para ser usado.
<?php
function get_menu($name, $class='',$view) {
global $CFG,$db;
$Menus = new ModelMenu($view);
return $Menus->getMenus($name,$class);
}
?>
162
6.2.8 Optimizar
Toma un texto y le quita los saltos de lnea y las tabulaciones, para reducir el
espacio entre las lneas y comprimir para crear versin minified.
Parmetros
$texto es el texto a reducir
Regreso
Esta funcin regresa el texto reducido.
function optimizar($texto) {
$quitar = array("\r", "\n", "\t");
$texto = str_replace($quitar, '', $texto);
return $texto;
}
6.2.9 Sistema
Redirect
Esta funcin maneja la forma en que se crearan y se remplazaran las
redirecciones dentro de la llamada de los mdulos.
Parmetros
$link es el link que se le da a los mdulos.
Regreso
Regresa el link ya creado para la llama en los navegadores
Title
Esta funcin sirve para manejar mejor el titulo dentro de la capa de vistas.
Is_Home
Esta funcin sirve para saber si el usuario est en la pgina principal.
Regreso
Regresa true(boolean) si est en la pgina principal o false(boolean) si no lo
est.
163
Restrict
Esta funcin sirve para llamar a log.php que sera el archivo que llama a su
vez a la pantalla de login si el usuario es un visitante y no ha sido identificado.
<?php
function is_url($string){
if(is_string($string)){
$parse=parse_url($string);
if(isset($parse['scheme'])){
return true;
}else{
return false;
}
}else{
return false;
}
}
function actual($menu_item) {
global $CFG;
$val1 = $menu_item;
$val2 = '?' . $CFG['redir'] . '=' . getParameter($CFG['redir']);
if ($val1 == $val2) {
return true;
} else {
return false;
}
}
164
function urls($type) {
global $CFG;
switch ($type) {
case 'login':
$return = $CFG['url'] . 'login.php';
break;
case 'logout':
$return = $CFG['url'] . 'login.php?action=logout';
break;
}
return $return;
}
function InterfaceUrls($type,$array=array()){
global $CFG;
$add=array();
foreach($array as $par => $val){
$add[]=$par.'='.$val;
}
$return = $CFG['url'].$type.'?'.implode('&',$add);
return $return;
}
function getUrl() {
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s"
: "";
$protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/") . $s;
165
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":" .
$_SERVER["SERVER_PORT"]);
return $protocol . "://" . $_SERVER['SERVER_NAME'] . $port .
$_SERVER['REQUEST_URI'];
}
function url($menos) {
$x = explode('/', getUrl());
$y = count($x) - 1;
for ($z = $y; $z > $y - $menos; $z--) {
unset($x[$z]);
}
$url = implode('/', $x);
return $url;
}
function getdir($var) {
global $CFG;
switch ($var) {
case 'theme':
//$return = $CFG['dirview'] . '/' . $CFG['dirtheme'] . '/' . $CFG['theme'] . '/';
$return = $CFG['dirapp'] . '/' . $CFG['dirview'] . '/';
break;
}
return $return;
}
?>
166
6.3 Model
Esta capa est definida en una carpeta con el mismo nombre en la carpeta
principal, su funcin es manejar los datos que el sistema maneja. La fuente
ms grande de informacin que esta capa maneja es la Base de datos, que
para tal accin de maneja un ORM (Mapeo objeto-relacional por sus siglas en
ingles) y una cuantas funciones que son utilizadas para la obtencin de los
datos del cliente.
6.3.1 ORM (Manejador de Conexiones a Base de datos)
Esta clase es una capa que se ha creado para que el desarrollador tenga un
punto de conexin con la base de datos, y que pueda manejar la seguridad de
forma excelente sin la necesidad de estar procurndose con la aplicacin de
seguridad por su cuenta.
Conn (Conexin)
Este mtodo es el encargado de tomar los datos que se le esta dando a la
clase y realizar una conexin con xito.
SQL
Este mtodo es para personas que no quieren tener las restricciones de los
dems mtodos de la clase, simplemente creas una consulta en SQL y se la
das como parmetro.
Parmetros
$sql se recibe directamente la consulta
Regreso
El mtodo regresa un arreglo multidimensional con los datos de la tabla que se
est consultando.
Query
Este mtodo es el encargado de darte una forma fcil de crear una consulta a
una tabla en la base de datos con solo decirle que tabla va a consultar.
Parmetros
$table se da el nombre de la tabla
$filter es la condicin con la que se filtrara la consulta
$order recibe el mtodo de ordenamiento de los resultados de la consulta
$limit recibe el numero de numero de registros que se obtendr
167
$mostrar se usa en produccin para ver las consultas sql realizadas
Regreso
El mtodo regresa un arreglo multidimensional con los datos de la tabla que se
est consultando.
Unin
Este mtodo es el encargado de crear conexiones entre dos tablas en una
consulta, esto nos permite no tener que crear dos consultas, y as, mejorar el
rendimiento de la consulta.
Parmetros
$tables se da el nombre de la tabla
$UnionCols se le da el nombre y un alias a cada tabla
$show Le dices que columnas de estas tablas vas a recibir
$filter es la condicin con la que se filtrara la consulta
$order recibe el mtodo de ordenamiento de los resultados de la consulta
$limit recibe el numero de numero de registros que se obtendr
$mostrar se usa en produccin para ver las consultas sql realizadas
Regreso
El mtodo regresa un arreglo multidimensional con los datos de la tabla que se
est consultando.
Insert
Este mtodo es el encargado de insertar a un registro en una tabla.
Parmetros
$tables se da el nombre de la tabla
$array recibes un arreglo con los campos de la tabla y los valores a darle
$mostrar se usa en produccin para ver las consultas sql realizadas
Regreso
El mtodo regresa el nmero de identificacin del registro creado.
168
Update
Este mtodo es el encargado de la manipulacin de un registro en cierta tabla.
Parmetros
$table se da el nombre de la tabla
$array recibes un arreglo con los campos de la tabla y los valores a darle
$id El valor de la llave primaria del registro que se modificara
Regreso
Regresa el valor de la consulta que sera la manipulacin completa de los
resultados o un false en caso de problemas al modificar
<?php
/**
* Clase Database
*
* Es el ORM que se usa en el framework para Mysql
*
* Esta clase es la capa de conexion entre el Framework y
* la base de datos. Esta clase te da todos los metodos
* necesarios para crear, modificar, eliminar y consultar
* en la base de datos.
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
class database {
169
var $host; // Direccion del Servidor
var $user; // Usuario de Base de Datos
var $pass; // Password de Base de Datos
var $db; // Dase de Datos
var $db_link; // Variable donde se Guarda la conexion para el Manejo de
la clase
var $conn = false;
var $persistant = false;
public $error = false;
var $variable=array();
/**
*
*/
public function setpersistance(){
$this->persistant=true;
}
/**
* Este metodo es el encargado de crear la conexion, y recoger los datos
* para tal proposito
*/
public function conn(){
global $CFG;
$this->host = $CFG['dbhost'];
$this->user = $CFG['dbuser'];
$this->pass = $CFG['dbpass'];
170
$this->db = $CFG['dbname'];
if ($this->persistant)
true);
$this->db_link = mysql_pconnect($this->host, $this->user, $this->pass,
else
true);
$this->db_link = mysql_connect($this->host, $this->user, $this->pass,
if (!$this->db_link) {
if ($this->error) {
$this->error($type=1);
}
return false;
}else {
if (empty($this->db)) {
if ($this->error) {
$this->error($type=2);
}
}else {
$db = mysql_select_db($this->db, $this->db_link);
if (!$db) {
if ($this->error) {
$this->error($type=2);
}
171
return false;
}
$this -> conn = true;
}
return $this->db_link;
}
}
/**
* Este metodo cierra la conexion de la Base de datos
*/
function close() {
if ($this -> conn){
if ($this->persistant) {
$this -> conn = false;
}else {
mysql_close($this->db_link);
$this -> conn = false;
}
}else {
if ($this->error) {
return $this->error($type=4);
}
}
}
/**
172
* En caso de algun error en la base de datos, este es el metodo
* que responde ante ellos
*
* @param int $type el tipo de error, y muestra el mensaje
*/
public function error($type=''){
if (empty($type)) {
return false;
}
else {
switch($type){
case 1:
_e('DBnotConnect');
break;
case 2:
_e('MysqlError',mysql_error());
break;
case 3:
_e('MysqlProcessStoped');
break;
default:
_e('MysqlENoConnect');
break;
}
}
173
}
/**
* Es el metodo permite realizar las consultas en lenguaje sql
*
* @param string $sql consulta sql.
*/
public function sql($sql){
$conexion=$this->db_link;
$data=array();
$consulta = @mysql_query($sql, $conexion);
if(!$consulta){
return false;
}else{
while ($fila = mysql_fetch_assoc($consulta)) {
$data[]=$fila;
}
return $data;
}
}
/**
* Este metodo es interior, y es el encargado de el manejo de filtros
* para la correcta utilizacion de la seguridad del ORM
*
* @param string $value el valor enviado por los metodos publicos
*/
174
private function filter($value){
if(!empty($value)){
$value=$this->SetVar($value);
return 'where '.$value;
}else{
return '';
}
}
/**
* Este Remplaza las variables en los filtros.
*
* @param string $data variable que se rempl azara
*/
private function SetVar($data){
foreach($this->variable as $var => $val){
$data=str_replace('{'.$var.'}',$val,$data);
}
return $data;
}
/**
* Este metodo es el encargado de manejar el orden de el resultado
* de una consulta
*
* @param array $val es un arreglo con los 2 datos (1) Columna de orden, y
(2)Metodo(ASC,DESC)
*/
175
private function order($val){
if(!empty($val)){
if(is_array($val)){
$table=$val['table'];
$data = $val['orden'];
$order = ' ORDER BY `'.$table.'` '.$data;
}else{
$order = ' '.$val;
}
return $order;
}else{
return '';
}
}
/**
* Este es el metodo interno que maneja los limites de la consulta
* y el alcance de estas.
*
* @param array $limit valores que se necesitan para limitar
*/
private function limit($limit){
$limited = '';
if(!empty($limit['inicio']) || !empty($limit['numero'])){
if(count($limit)>1){
176
$limited=' limit '.$limit['inicio'].','.$limit['numero'];
}else if(count($limit)>0){
$limited=' limit '.$limit['inicio'];
}
}
return $limited;
}
/**
* Este metodo es el ecargargo de enviar variables a los filtros
* y asi poder sanitizarlos.
*
* @param string $variable variable para distinguir el dato dentro de la
consulta
* @param string $value dato que se envia para ser sanitizado
*/
public function variable($variable,$value){
$conexion = $this->db_link;
$return=htmlspecialchars($value,ENT_QUOTES);
$this->variable[$variable]=$return;
}
/**
* Este metodo es el encargado de crear el nombre de la tabla en el INNER
JOIN
*
* @param string $condition esto recibe la condicion
* @return string Regresa el Nombre de la tabla en la union formado "tabla t".
177
*/
private function unionTab($number,$tabassoc){
if($number=='1' || $number=='2'){
return $tabassoc['table'].' '.$tabassoc['assoc'];
}else{
return '';
}
}
/**
* Este metodo sirve para recibir como va a reaccionar el archivo Ajax
* que se emplean en los proyectos. Este metodo responde llamando a la
* funcion que se esta empleando.
*
* @param string $condition esto recibe la condicion
* @return string Regresa la Comparacion de las tablas en la consulta INNER
JOIN "u.id=a.b"
*/
private function ConUnion($UnionCols){
$add = array();
foreach($UnionCols as $assoc => $value){
$add[] = $assoc.'.'.$value;
}
return implode('=',$add);
}
/**
* Esta funcion es la encargada de crear un Consulta JOIN
178
*
* @param string $condition esto recibe la condicion
*/
public function
union($tables,$UnionCols,$show='*',$filter='',$order='',$limit='',$mostrar=false){
if(is_array($tables) && is_array($UnionCols)){
$sql = '';
// Select * from usuario u inner join casas c on u.id=c.user;
$x = 0;
$tabl=array();
foreach($tables as $assoc => $value){
$tabl[]=array(
'table'=>$value,
'assoc'=>$assoc
);
}
$firstTable = $this->unionTab('1',$tabl[0]);
$secondTable = $this->uniontab('2',$tabl[1]);
$sql = 'Select '.$show.' from '.$firstTable;
$sql.=' INNER JOIN '.$secondTable.' ON '.$this-
>ConUnion($UnionCols);
}
$filter = $this->filter($filter);
179
$orden = $this->order($order);
$limit = $this->limit($limit);
$sql.=' '.$filter.$order.' '.$limit;
if($mostrar){
echo $sql;
}
$consulta = $this->sql($sql);
return $consulta;
}
/**
* Este metodo es el encargado de realizar las consultas basicas
*
* @param string $table se da el nombre de la tabla
* @param string $filter es la condicion con la que se filtrara la consulta
* @param array $order recibe el metodo de ordenamiento de los resultados
de la consulta
* @param boolean $mostrar se usa en produccion para ver las consultas sql
realizadas
* @return array regresa un arreglo multidimensional con los datos de la tabla
*/
public function query($table,$filter='',$order='',$limit='',$mostrar=''){
$conexion = $this->db_link;
$sql = 'Select * from '.$table;
$filter = $this->filter($filter);
$orden = $this->order($order);
180
$limit = $this->limit($limit);
$sql.=' '.$filter.$orden.' '.$limit;
if(!empty($mostrar)){
echo $sql;
}
$consulta = $this->sql($sql);
return $consulta;
}
/**
* Obtienes el registro del valor mas grande de una columna.
*
* @param string $table se da el nombre de la tabla
* @param string $id es la columna en la que buscaras el mayor registro
* @param string $filter es la condicion con la que se filtrara la consulta
* @param boolean $mostrar se usa en produccion para ver las consultas sql
realizadas
* @return array regresa un arreglo multidimensional con los datos de la tabla
*/
public function last($table,$id,$filter='',$mostrar=''){
$sql = 'Select max('.$id.')as ultimo from '.$table;
$filter = $this->filter($filter);
$sql.=' '.$filter;
if(!empty($mostrar)){
echo $sql;
}
181
$consulta = $this->sql($sql);
if(isset($consulta[0])){
$data=$consulta[0];
$this->variable('id',$data['ultimo']);
$query=$this->query($table,$id.'={id}');
}
return $query;
}
/**
* Insertar un registro en una tabla
*
* @param string $table se da el nombre de la tabla
* @param array $array Es el arreglo de datos que se insertaran
* @param boolean $mostrar se usa en produccion para ver las consultas sql
realizadas
* @return int Regresa el identificador del registro que se ha creado
*/
public function insert($table,$array,$mostrar=false){
$conexion=$this->db_link;
$rows=array();
$datas=array();
$error=array();
foreach($array as $key=>$value){
$rows[]="`".$key."`";
182
$datas[]=(is_string($value) ||
empty($value))?"'".$value."'":$value;
}
$row=implode(',',$rows);
$data=implode(',',$datas);
$sql="INSERT INTO `$table` ($row) VALUES ($data);";
if($mostrar){
echo $sql.'<br>';
}
mysql_query($sql, $conexion) or $error[]=$sql;
return mysql_insert_id($conexion);
}
/**
* Se modifica el registro de cierta tabla.
*
* @param string $table se da el nombre de la tabla
* @param array $array Es el arreglo de datos que se insertaran
* @param boolean $mostrar se usa en produccion para ver las consultas sql
realizadas
* @return int Regresa el identificador del registro que se ha creado
*/
public function update($table,$array,$id){
$conexion=$this->db_link;
$filter=$id['row'].'={value}';
$this->variable('value',$id['value']);
$query=$this->query($table,$filter,'','1');
183
$q=$query[0];
$return=true;
foreach($array as $key=>$value){
if($q[$key]!=$value){
$ret=$this-
>upquery($table,$key,$value,$id['row'],$id['value']);
if(!$ret){$return=false;}
}
}
return $return;
}
/**
* Este metodo crea el sql necesario para crear las consultas para modificar
*
* @param string $table se da el nombre de la tabla
* @param string $campo Columna que se modificara
* @param string $value El nuevo valor que se le dara al campo
* @param string $campoid El nombre de la columna con identificador
unico(llave primaria)
* @param int $id El valor de la llave primaria del registro que se modificara
* @return mixed Resultados de la conexion realizada
*/
private function upquery($table,$campo,$value,$campoid,$id){
$conexion=$this->db_link;
if(is_string($value)){
$value='"'.$value.'"';
184
}
$sql='UPDATE `'.$table.'` SET `'.$campo.'` = '.$value.' where
'.$campoid.'='.$id.' limit 1;';
$con=@mysql_query($sql, $conexion);
return $con;
}
/**
* Este metodo sirve para eliminar un registro en la tabla
*
* @param string $table se da el nombre de l a tabla
* @param string $col El nombre de la columna con identificador unico(llave
primaria)
* @param array $id El valor de la llave primaria del registro que se
modificara
*/
public function delete($table,$col,$id){
$conexion=$this->db_link;
$where = $col.'='.$id;
$sql='DELETE FROM '.$table.' where '.$where.' LIMIT 1;';
mysql_query($sql, $conexion) or $error[]=$sql;
}
}
?>
185
6.3.2 Men
Esta clase toma los mens creados en la parte de la configuracin para crear
un men.
Obtener Men
Este mtodo obtiene los mens que son configurados al inicio. Este mtodo
obtiene esos mens, y los ordena para ser procesados.
Crear Men
Este mtodo crea el men usando un archivo HTML definido en las vistas.
6.3.3 Mdulos
Esta clase toma los mdulos creados en la parte de la configuracin para crear
la estructura.
Obtener Mdulos
Este mtodo obtiene los mdulos que son configurados al inicio. Este mtodo
obtiene esos mens, y los ordena para ser procesados.
Existe Plugin
Este mtodo verifica si el modulo que estas llaman existe.
6.3.4 Redirecciones
Esta clase toma las redirecciones creados en la parte de la configuracin para
crear un men.
Redireccin a Modulo
Este mtodo lee las redirecciones los mdulos y crea un respuesta a las
redirecciones que el sistema necesita.
<?php
// Si existe los datos para la conexion a Mysql, se manda a llamar al archivo
encargado.
if(isset($CFG['dbtype'])){
if(!empty($CFG['dbtype'])){
include ($CFG['path'] . DS . $CFG['dirmodel'] . DS . 'database' .
DS . $CFG['dbtype'] . DS . 'database.php');
186
}
}
/**
* Clase Model
*
* Es la estructura Basica para otras 3 Classes
*
* Es la estructura Basica para crear Menus,
* Modelos y Redirecciones, para el manejo del sistema.
*
* @author Juan Rael Corrales Arellano
* @author http://labs.contactopv.com
*
* @package Izanami_Controller_Classes
*/
class Model{
/**
*
*
* @param int $var
* @param int $val
*/
public function varExists($var,$val){
$this->Existsvar=$var;
$this->Existsval=$val;
187
}
/**
* Revisa si la un registro existe
*
* @param string $table La tabla donde se buscara el registro
* @param string $filter Es el filtro que se usa en para el registro
*/
public function Exists($table,$filter){
global $CFG,$db;
$consulta = '';
if(count($consulta)>0){
return true;
}else{
return false;
}
}
}
class ModelMenu extends Model{
private $view;
public function ModelMenu($view){
$this->view = $view;
}
public function getMenus($name,$class){
global $CFG;
188
$menu = menus::getMenus($name);
$return = '';
$count = count($menu['items']);
if($count>0){
$x=0;
$classC = count($class);
foreach($menu['items'] as $name => $item){
$name = $item['name'];
$data = $item['data'];
$classes = array();
if($classC>0){
if(isset($class['middle'])){
$classes[] = $class['middle'];
}
switch(true){
case($x==0):
if(isset($class['first'])){
$classes[] = $class['first'];
}
break;
case ($x==($count-1)):
if(isset($class['last'])){
$classes[] = $class['last'];
}
break;
189
}
}
if(red($data)){if(isset($class['actual'])){$classes[] = $class['actual'];}}
$attrClass = implode(' ',$classes);
$return.=$this->createMenu($name,redirect($data),$attrClass);
$x++;
}
}
return $return;
}
private function createMenu($name,$data,$class){
if(empty($this->view)){
$view = new view('menu');
}else{
$view = new view('menu','vista',_Vista);
}
$view->addparameter('class',$class);
$view->addparameter('item_data', $data);
$view->addparameter('item_name', $name);
return $view->cargar(true);
}
public function getItems($menu){
global $CFG;
$items = '';
190
return $items;
}
}
class ModelModules extends Model{
public function pluginExists($plug){
global $CFG;
$return = Modules::moduleExists($plug);
return $return;
}
public function redirectDir($value){
$module = $this->getModule($value);
return $module['folder_name'];
}
public function getModule($module){
global $CFG,$db;
$module = $module['value'];
$return = Modules::getModule($module);
return $return;
}
}
class ModelRedirect extends Model{
public function Redirect2Module($redirect){
$redir = $this->getRedirect($redirect);
$mod = new ModelModules;
191
$module = $mod->getModule($redir);
$modulo = $module['folder_name'];
return $modulo;
}
public function getRedirect($value){
global $CFG,$db;
$get = redirects::get($value);
$return = array('type'=>'module','value'=>$get);
return $return;
}
public function redirectExist($name){
global $CFG;
$return = redirects::exists($name);
return $return;
}
}
/**
* Es la funcion encargada de recoger datos de los distintos puntos.
*
* @param string $par Nombre del la variable en los metodos de envio.
* @param string $type Tipos de parametros encapsulados
*/
function getParameter($par, $type='') {
switch($type){
192
case 'ajax':
if(!empty($_POST[$par])){
$return = $_POST[$par];
}else{
$return = false;
}
break;
case 'cookie':
$c=new sessiones();
$return = $c->get($par);
break;
default:
switch(true){
case(!empty($_GET[$par])):
$return = $_GET[$par];
break;
case(!empty($_POST[$par])):
$return = $_POST[$par];
break;
default:
$return = false;
break;
}
break;
}
193
return $return;
}
?>
6.4 View
Esta capa es la encarga de crear la parte visual del sistema, este conjunto de
libreras es la encargada de crear desde los mens, hasta las tablas o incluso,
incluir las vistas que se utilizan en el sistema. Para el manejo de las vistas, el
sistema tiene tres clases, que sirven para manejar las plantillas que se usaran
en el sistema.
6.4.1 Clases
View
Esta clase sirve para el que desarrollador pueda llamar a las plantillas que se
usaran en el sistema, y a su vez poder manejar variables en esta plantillas para
su insercin de informacin.
<?php
class view extends IzanamiView {
private $object;
private $archivo;
private $FoView;
public function view($archivo, $theme='', $folder='', $format='') {
$this->object= new izanami_view();
$this->ArView = $archivo;
$this->ThView = $theme;
$this->FoView = $folder;
$this->file_js = new file_js();
$this->archivo = $this->get_archivo($archivo, $theme, $folder, $format);
194
}
public function addparameter($name, $value='') {
$this->object->assign($name,$value);
}
public function menu($menuName,$Classes=array(),$menuTag='menu'){
$getMenu=get_menu($menuName,$Classes,$this->FoView);
$this->addparameter($menuTag,$getMenu);
}
public function showFile(){
echo $this->archivo;
}
public function cargar($return=false) {
$this->tags();
$back=$this->object->fetch($this->archivo);
if($return){
return $back;
}else{
echo $back;
}
}
private function ViewType($call,$view=''){
global $CFG;
$basic=$CFG['path'] . DS . $CFG['dirapp'] . DS;
switch($call){
case 'vista':
195
$return = $basic.$view.DS.$CFG['ProjectFolderView'].DS;
break;
case 'basic':
$return = $basic.$CFG['ProjectFolderView'].DS;
break;
case 'plugin':
$return =
$basic.$CFG['PluginFolder'].DS.$view.DS.$CFG['ProjectFolderView'].DS;
break;
}
return $return;
}
private function get_archivo($archivo, $theme='', $folder='', $format='') {
global $CFG;
$view = $CFG['dirview'];
switch (true) {
case ($theme == 'vista'):
$dir = $this->ViewType('vista',$folder);
break;
case ($theme == 'plugin'):
$dir = $this->ViewType('plugin',$folder);
break;
default:
$dir = $this->ViewType('basic');
break;
}
196
if (dev_mode()) {
$file = $this->archivo($archivo, $dir);
} else {
$file = (empty($format)) ? $archivo . '.html' : $archivo . '.' . $format;
}
$include = $dir . $file;
if (file_exists($include)) {
return $include;
} else {
return false;
}
}
private function archivo($nombre, $folder) {
$array = files($folder);
foreach ($array as $files) {
if ($nombre == $files[0]) {
$formato=(isset($files[1]))?$files[1]:'html';
return $files[0] . '.' . $formato;
}
}
return 0;
}
private function tags(){
global $CFG;
foreach($CFG as $lol => $tumama){
197
$this->addparameter($lol,$tumama);
}
}
}
?>
IzanamiView
Esta clase es la clase padre que manejara las plantillas, esta clase no es
utilizada de forma abierta en el sistema, simplemente hereda sus atributos y
mtodos a la clase View.
<?php
class izanami_view extends IzanamiView {
private $params=array();
function construct(){
}
public function assign($name,$value){
$this->params[$name]=$value;
}
public function fetch($archivo){
if(file_exists($archivo)){
$new_text = file_get_contents($archivo);
}else{
$new_text = '';
}
198
foreach($this->params as $name=>$value){
if(is_array($value)){
$new_text=$this-
>replace_array($name,$value,$new_text);
}else{
$new_text=str_replace('{$'.$name.'}',$value,$new_text);
}
}
$new_text=$this->eliminar_params($new_text);
return $new_text;
}
public function replace_array($name,$array,$texto){
foreach($array as $n_v => $v_v){
$texto=str_replace('{$'.$name.'.'.$n_v.'}',$v_v,$texto);
}
return $texto;
}
private function eliminar_params($text){
return $text;
}
}
?>
Vista
199
Esta clase es usada para dividir las vistas diferenciando por usuarios o grupos.
<?php
class vista extends IzanamiView{
private $array = array();
private $view = array();
private $permiso;
private $ajax = false;
function construct($array=array()){
if(empty($array)){
$this->ajax=true;
}else{
$this->array=$array;
}
}
public function permiso($valor){
if(empty($this->array)){
$this->view=$valor;
$this->permiso=$valor;
}else{
foreach($this->array as $x => $y){
if($y['permiso']==$valor){
$this->view=$y;
$this->permiso=$x;
}
200
}
}
}
public function ajax(){
global $CFG,$core,$user;
define('_Vista',$this->permiso);
$Vista=_Vista;
$dirapp=$CFG['path'].DS.$CFG['dirapp'];
cargar_file($dirapp.DS.$Vista.DS.$CFG['ProjectFolderControl']);
cargar_file($dirapp.DS.$Vista.DS.$CFG['ProjectFolderModel']);
$file=$dirapp.DS.$Vista.DS.'ajax.php';
if(file_exists($file)){
include($file);
}else{
echo $file;
}
}
public function firstLogin(){
restrict();
}
public function agregados($dir,$prioridad=array(),$non=array()){
201
global $CFG,$user,$core;
cargar_file($dir,$prioridad,$non);
}
public function def($val){
if(empty($this->permiso)){
$this->permiso=$val;
}
}
public function cargar(){
global $CFG,$core,$user;
if(!$this->ajax){
define('_Vista',$this->permiso);
$Vista=_Vista;
$dirapp=$CFG['path'].DS.$CFG['dirapp'];
$view=$dirapp.DS.$this->permiso.DS;
cargar_file($view.$CFG['ProjectFolderControl']);
cargar_file($view.$CFG['ProjectFolderModel']);
$app = $dirapp.DS.$Vista.DS.'app.php';
if(file_exists($app)){
include($app);
}
}
}
}
?>
202
CAPITULO 7 BASE DE DATOS.
7.1.1 Agenda
agenda
Campo Tipo
id int(11)
mensaje varchar(50)
descripcion text
fecha_creacion int(11)
fecha_reunion int(11)
type enum('Todos', 'Seguridad', 'Inquilinos',
'Inquilino')
user int(11)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No id 3
203
7.1.2 Bitacora
bitacora
Campo Tipo
id_bitacora int(11)
fecha int(11)
asunto text
npersonas int(4)
casa int(2)
identificacion int(2)
tipoidentificacion varchar(20)
comentarios text
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No id_bitac
ora
1
7.1.3 Caja chica
cajachica
Campo Tipo
id_caja int(11)
fecha_emision int(11)
no_transferencia int(11)
no_factura varchar(30)
proveedor varchar(80)
concepto text
entrada double
salida double
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No id_caja 3
204
7.1.4 Casas
Casas
Campo Tipo
user int(11)
pagos double(9,2)
deuda double(9,2)
id int(11)
casa int(5)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No id 5
7.1.5 dm
dm
Campo Tipo
id int(11)
userRecibe int(11)
mensaje text
fecha int(11)
userEnvia int(11)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No id 2
7.1.6 Egresos
egresos
Campo Tipo
id_egreso int(11)
fecha_emisio int(11)
numeroCheque int(11)
numeroFactura int(11)
205
fechaFactura int(11)
fechaCobro int(11)
nombreProveedor varchar(30)
concepto int(11)
descripcion1 varchar(80)
descripcion2 varchar(80)
egreso double
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id_egre
sos
2
7.1.6 Global
global
Campo Tipo
id int(11)
data varchar(20)
value varchar(80)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 2
7.1.7 Grupos
grupos
Campo Tipo
id int(11)
nombre varchar(80)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 4
206
7.1.8 Ingresos
ingresos
Campo Tipo
id int(11)
fecha int(11)
numrecibo int(11)
Fecha_Pago int(11)
Referencia int(11)
Concepto text
Descripcion1 text
Descripcion2 text
Entradas double
user int(11)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 7
7.1.9 Jardinera
jardineria
Campo Tipo
id_evento int(11)
evento varchar(70)
fecha int(11)
descripcion text
proveedor int(11)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 7
7.2.1 Log
Log
Campo Tipo
id int(11)
207
fecha int(11)
userID int(11)
groupID int(11)
groupNombre varchar(50)
idaccion varchar(50)
detalleaccion text
userNombre varchar(50)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 24
7.2.2 Reportes Mantenimiento
Reportemantenimiento
Campo Tipo
id_reporte int(11)
titulo varchar(50)
fecha int(11)
id int(11)
costo int(11)
descripcion text
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id_repo
rte
3
7.2.3 Proveedores
proveedores
Campo Tipo
id int(11)
nombre varchar(40)
apellido varchar(30)
empresa varchar(20)
208
telefono int(13)
direccion varchar(25)
correo varchar(20)
edo_civil varchar(20)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 3
7.2.4 Reportes
reportes
Campo Tipo
id int(11)
fecha int(11)
reporte text
user int(11)
status enum('Terminado', 'Asignado',
'Proceso')
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 2
7.2.5 Reportes Comentarios
reportes_comentarios
Campo Tipo
id int(11)
reporte int(11)
user int(11)
fecha int(11)
comentario text
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
209
PRIMARY BTREE Si No Id 2
7.2.5 Saldo Inicial
saldosiniciales
Campo Tipo
id int(11)
month int(2)
year int(5)
valor double(7,2)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 3
7.2.6 Reportes Comentarios
Reportes_comentarios
Campo Tipo
id int(11)
reporte int(11)
user int(11)
fecha int(11)
comentario text
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 3
7.2.7 Servicios Egresos
Serviciosegresos
Campo Tipo
id_egreso int(11)
servicioegreso varchar(80)
210
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id 2
7.2.8 Servicios Ingresos
serviciosingresos
Campo Tipo
id_egreso int(8)
servicioegreso varchar(70)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id_servi 12
cio
7.2.9 Usuario
Usuario
Campo Tipo
id smallint(5)
nombre varchar(30
apellidos varchar(50)
login varchar(20)
password varchar(25)
avatar text
group int(11)
mail varchar(40)
telefono int(15)
ndices:
Nombre de la clave tipo Unico Empacado Campo Cardinalidad
PRIMARY BTREE Si No Id_servi 12
cio
211
CONCLUSIONES
Despus de los anlisis tcnico y econmico se determino la aplicacin como
una herramienta que puede atacar la problemtica que se plantea, sistemas
web son las tecnologas que hoy en da tienen mucho auge, proveer la
versatilidad que se necesita para la utilizacin de este sistema. Por la rpida
comunicacin entre personas por este medio se vio viable, tomando como base
la forma en cmo fluye la informacin, por ejemplo; redes sociales, clientes de
mensajera, y los sistemas de mensajera rpida.
Gracias a la aplicacin de las tecnologas web, podemos estar informados de
forma rpida, los procesos que hoy en da se llevan a cabo empiezan a
inclinarse ms por la va web, es por eso que el alcance y las posibilidades que
puede brindar este sistema soy muy grandes.
En cuanto a las ventajas econmicas se puede ver que no tiene un costo alto
ya que la mayora de las personas cuentan con equipos de cmputo y una
conexin a internet, el cual es el ambiente necesario para que se pueda
interactuar en el sistema entre condminos, de forma fcil.
212
BIBLIOGRAFA
Galvn, L. E. (2002). Historia de la educacin en Mxico.
Garca, L., Ruiz Corbella, M., & Domng, D. (2007). De La Educacin A
Distancia A La Educacin Virtual.
Goleman. (1999). Inteligencia Emocional. Kairs.
Hernandez Samperi, R., Fernandez-Collado, C., & Baptista Lucio, P. (2006).
Metodologia de la Investigcion. Distrito Federal: McGraw-Hill.
Peralta, L. E. (2001). Calidad Educativa. Queretaro.
Salinas Ibez, J., Aguaded Gmez, J. I., & Cabrero Almenara, J. (2004).
Tecnologas para la Educacin. Alianza Editorial.
R. S. (01 de Enero de 2007). SAARI. Recuperado el 7 de Diciembre de 2010,
de SAARI: http://www.saari.com.mx
P. Martinez Cobo, M. Cabello Requena, J.C. Diaz martin, 1997.
Sistemas Operativos Teorias y Practica. Diaz de Santos Editorial.