<?php
/**
* MyRad4PHP
* Aplicacion desarrollada por Jorge Luis Prado Anci, en cuanto al licenciamiento
* pues esta aplicacion se entrega tal cual y tienen permiso de modifcarla y
* distribuirla de la manera que deseen, solo se les solicita que respeten el
* nombre del desarrolador indicando quien lo ha desarrollado y manteniendo
* los comentarios en los archivos del script,
* como esta aplicacion se entrega tal cual el creador no se hace responsable
* del uso o mal uso de la misma, en lo referido al soporte el creador intentara
* dar el soporte necesario pero dejando en claro que es meramente voluntario.
*
* @package MyRad4PHP
* @author Jorge Luis Prado Ancí
* @copyright http://myrad4php.wordpress.com
* @version 0.59
* @access public
*/
function setidioma($smarty)
{
include($GLOBALS["ruta"]."config/idiomas/".$GLOBALS['idiomafile']);
$smarty->assign("userlabel",$GLOBALS["userlabel"]);
$smarty->assign("passwordlabel",$GLOBALS["passwordlabel"]);
$smarty->assign("datelabel",$GLOBALS["datelabel"]);
$smarty->assign("logoutlabel",$GLOBALS["logoutlabel"]);
$smarty->assign("loginlabel",$GLOBALS["loginlabel"]);
$smarty->assign("logintitle",$GLOBALS["logintitle"]);
$smarty->assign("homelabel",$GLOBALS["homelabel"]);
$smarty->assign("titleindex",$GLOBALS["titleindex"]);
$smarty->assign("titlelist",$GLOBALS["titlelist"]);
$smarty->assign("operacioneslabel",$GLOBALS["operacioneslabel"]);
$smarty->assign("insertlabel",$GLOBALS["insertlabel"]);
$smarty->assign("filterlabel",$GLOBALS["filterlabel"]);
$smarty->assign("unfilterlabel",$GLOBALS["unfilterlabel"]);
$smarty->assign("sortbylabel",$GLOBALS["sortbylabel"]);
$smarty->assign("sortlabel",$GLOBALS["sortlabel"]);
$smarty->assign("hidesort",$GLOBALS["hidesort"]);
$smarty->assign("editlabel",$GLOBALS["editlabel"]);
$smarty->assign("deletelabel",$GLOBALS["deletelabel"]);
$smarty->assign("detailslabel",$GLOBALS["detailslabel"]);
$smarty->assign("delselectslabel",$GLOBALS["delselectslabel"]);
$smarty->assign("noselectlabel",$GLOBALS["noselectlabel"]);
$smarty->assign("acceptlabel",$GLOBALS["acceptlabel"]);
$smarty->assign("cancellabel",$GLOBALS["cancellabel"]);
$smarty->assign("inserttitlelabel",$GLOBALS["inserttitlelabel"]);
$smarty->assign("edittitlelabel",$GLOBALS["edittitlelabel"]);
$smarty->assign("detailstitlelabel",$GLOBALS["detailstitlelabel"]);
$smarty->assign("returnlistlabel",$GLOBALS["returnlistlabel"]);
$smarty->assign("msgdeletelabel",$GLOBALS["msgdeletelabel"]);
$smarty->assign("yeslabel",$GLOBALS["yeslabel"]);
$smarty->assign("notlabel",$GLOBALS["notlabel"]);
$smarty->assign("printlabel",$GLOBALS["printlabel"]);
$smarty->assign("pageorientationlabel",$GLOBALS["pageorientationlabel"]);
$smarty->assign("alabeslorientation",$GLOBALS["alabeslorientation"]);
$smarty->assign("datefromlabel",$GLOBALS["datefromlabel"]);
$smarty->assign("datetolabel",$GLOBALS["datetolabel"]);
}
function filesinfolder($folder)
{
$aFiles=array();
$d = dir($folder);
while (false !== ($entry = $d->read())) {
if(substr($entry,0,1)!=".")
$aFiles[]=$entry;
}
$d->close();
return $aFiles;
}
function getdetails($entidad,$objentity)
{
$dc=new datacontex();
$acamposOrdenados=array();
$pkcampo = "";
$acampos=array();
foreach($entidad->metatabla->aCampos as $metacampo)
{
$acamposOrdenados[$metacampo->posicion]=$metacampo;
if($metacampo->espk)
$pkcampo=$metacampo->nombre;
}
foreach($acamposOrdenados as $metacampo)
{
$campo=array();
$campo[0]=$metacampo->displayname;
if($metacampo->esfk)
{
$a=$objentity[$metacampo->nombre];
eval("\$a=\$entidad->registros[0]->_".$metacampo->tablarelacion."->tostring();");
$campo[1]=$a;
}
else
{
$a=$objentity[$metacampo->nombre];
switch($metacampo->tipo)
{
case "bool":
if($a==1)
$campo[1]=$GLOBALS["yeslabel"];
else
$campo[1]=$GLOBALS["notlabel"];
break;
case "datetime":
if($metacampo->subtipo=="date")
$campo[1]=substr($a,0,10);
else
if($metacampo->subtipo=="time")
$campo[1]=substr($a,10);
else
$campo[1]=$a;
break;
default:
$campo[1]=$a;
break;
}
}
$acampos[]=array($metacampo->nombre=>$campo);
}
return $acampos;
}
function checkedtobool($obj,$objentity)
{
foreach($objentity->metatabla->aCampos as $metacampo)
{
$a=$metacampo->tipo;
$n=strcmp($a,"bool");
if($n==0)
{
if(strtolower($obj[$metacampo->nombre])=="on")
$obj[$metacampo->nombre]=1;
else
$obj[$metacampo->nombre]=0;
}
if($metacampo->tipo=="decimal")
$obj[$metacampo->nombre]=(float)$obj[$metacampo->nombre];
}
return $obj;
}
function valida($obj,$objentity)
{
$err=array();
foreach($objentity->metatabla->aCampos as $metacampo)
{
if(substr($metacampo->nombre,0,1)!='_')
{
if($metacampo->requerido)
{
if(!$metacampo->readonly)
{
$val=$obj[$metacampo->nombre];
if(strlen($val)==0)
{
if($metacampo->tipo!="bool")
$err[]="EL campo ".strtoupper($metacampo->displayname)." No puede estar vacio.";
}
}
}
}
}
return $err;
}
function getfields($entidad,$objentity,$espartido=0)
{
$dc=new datacontex();
$acamposOrdenados=array();
$pkcampo = "";
$acampos=array();
$acampostop=array();
$acamposbutton=array();
$ncampos=0;
foreach($entidad->metatabla->aCampos as $metacampo)
{
if($metacampo->mostrar)
{
$acamposOrdenados[$metacampo->posicion]=$metacampo;
if($metacampo->espk)
$pkcampo=$metacampo->nombre;
$ncampos++;
}
}
foreach($acamposOrdenados as $acamposOrdenado)
{
$metacampo=$acamposOrdenado;
$campo=array();
$campo["etiqueta"]=$metacampo->displayname;
$campo["nombre"]=$metacampo->nombre;
$campo["linkfields"]=$metacampo->linkfields;
if($metacampo->esfk)
{
$campo["tipocontrol"]="controls_edit/fk_edit.tpl";
$objconcat=$dc->tablas[$metacampo->tablarelacion];
$objconcat->fill();
$aindices=array();
$aetiquetas=array();
if($metacampo->requerido!=true)
{
$aindices[]="-1";
$aetiquetas[]=$GLOBALS["noselectlabel"];
}
foreach($objconcat->registros as $rec)
{
eval("\$cad=\$rec->".$metacampo->camporelacion.";");
$aindices[]=$cad;
$aetiquetas[]=$rec->tostring();
}
$a="";
$a=$objentity[$metacampo->nombre];
$campo["indices"]=$aindices;
$campo["etiquetas"]=$aetiquetas;
$campo["valor"]=$a;
}
else
{
$campo["tipocontrol"]="label.tpl";
switch($metacampo->tipocontrol)
{
case "string":
{
$campo["tipocontrol"]="controls_edit/text_edit.tpl";
break;
}
case "text":
{
$campo["tipocontrol"]="controls_edit/text_edit.tpl";
break;
}
case "integer":
{
$campo["tipocontrol"]="controls_edit/integer_edit.tpl";
break;
}
case "decimal":
{
$campo["tipocontrol"]="controls_edit/decimal_edit.tpl";
break;
}
case "float":
{
$campo["tipocontrol"]="controls_edit/decimal_edit.tpl";
break;
}
case "bool":
{
$campo["tipocontrol"]="controls_edit/bool_edit.tpl";
break;
}
case "datetime":
$campo["tipocontrol"]="controls_edit/date_edit.tpl";
break;
}
$campo["tamanio"]=$metacampo->ancho;
$a=$objentity[$metacampo->nombre];
if($metacampo->tipo=="bool")
if($a==1)
$campo["valor"]="on";
else
$campo["valor"]="Off";
else
$campo["valor"]=$a;
}
if($metacampo->readonly)
{
$campo["tipocontrol"]="label.tpl";
}
if($espartido==0)
$acampos[$metacampo->nombre]=$campo;
else
if($metacampo->gotop)
$acampostop[$metacampo->nombre]=$campo;
else
$acamposbutton[$metacampo->nombre]=$campo;
}
if($espartido==1)
$acampos= array($acampostop,$acamposbutton);
return $acampos;
}
function islogin($smarty)
{
if(file_exists($GLOBALS["ruta"]."config/secure.php"))
{
if(!isset($_SESSION["useract"]))
header("Location: ".$GLOBALS["basepath"]."login.php");
else
{
$c= $_SESSION["useract"];
$smarty->assign("nomuser",$c["nombre"]);
}
}
}
function makefilters($objentidad,$smarty,$valsant=array())
{
$dc=new datacontex();
$filtros=array();
foreach($objentidad->metatabla->aCampos as $campo)
{
if(isset($valsant[$campo->nombre]))
$valant=$valsant[$campo->nombre];
else
$valant="";
if($campo->mostrar)
if($campo->filtrar)
{
$c= $campo->filtroobject;
$cvalorfiltro = "";
if($c=="text")
{
$objconcat=$dc->tablas[$campo->tablarelacion];
$objconcat->fill();
$aindices=array();
$aetiquetas=array();
$aindices[]="-1";
$aetiquetas[]=$GLOBALS["unfilterlabel"];
$includefile="filter_text.tpl";
foreach($objconcat->registros as $rec)
{
eval("\$cad=\$rec->".$campo->camporelacion.";");
if($valant==$cad)
$cvalorfiltro=$rec->tostring();
$aindices[]=$cad;
$aetiquetas[]=$rec->tostring();
}
$filtros[]=array($campo->nombre=>array($aetiquetas,$aindices,$includefile,$valant,$campo->displayname,$cvalorfiltro));
}
if($c=="bool")
{
if($valant==1)
$cvalorfiltro=$GLOBALS["yeslabel"];
$filtros[]=array($campo->nombre=> array(array($GLOBALS["unfilterlabel"],$GLOBALS["yeslabel"],$GLOBALS["notlabel"]),array(-1,1,0),"filter_text.tpl",$valant,$campo->displayname,$cvalorfiltro));
}
if($c=="datetime")
{
$valsdate = array("valdesde"=>"","valhasta"=>"");
$cprint="";
if($campo->subtipo=="date")
{
$includefile="filter_date.tpl";
if(is_array($valant))
if(sizeof($valant)>0)
{
$valsdate = array("valdesde"=>$valant[0],"valhasta"=>$valant[1]);
$cprint=$GLOBALS["datefromlabel"].": ".$valant[0]." ".$GLOBALS["datetolabel"].": ".$valant[1];
}
else
$valsdate = array("valdesde"=>date("Y-m-d"),"valhasta"=>date("Y-m-d"));
$filtros[]=array($campo->nombre=>array($campo->displayname,$valsdate,$includefile,$cprint,$campo->displayname,$cprint));
}
else
{
$includefile="filter_time.tpl";
}
}
}
}
$smarty->assign('tabla',$objentidad->nomtabla);
$smarty->assign('filtros',$filtros);
}
function exist_f_or_d($nametable,$page)
{
if(file_exists($GLOBALS["ruta"]."swdd/custom_pages/".$nametable."/".$page))
return true;
else
return false;
}
function gendatetime($row,$prefijo)
{
$cadformat = $GLOBALS["dateformat"];
$separator =$GLOBALS["dateseparator"];
$fechacad="";
switch($cadformat)
{
case "yyyy".$separator ."mm".$separator."dd":
$fechacad=$row[$prefijo."Year"].$separator.$row[$prefijo."Month"].$separator.$row[$prefijo."Day"];
break;
case "dd".$separator."mm".$separator."yyyy":
$fechacad=$row[$prefijo."Day"].$separator.$row[$prefijo."Month"].$separator.$row[$prefijo."Year"];
break;
case "mm".$separator."dd".$separator."yyyy":
$fechacad=$row[$prefijo."Month"].$separator.$row[$prefijo."Day"].$separator.$row[$prefijo."Year"];
break;
}
return $fechacad;
}
function makegridini($tablas)
{
$tbls=array();
foreach($tablas as $tabla)
{
$tbls[]="<a href=\"swdd/template_pages/list.php?tabla=".$tabla->nombre."\">".$tabla->metatabla->displayname."</a>";
}
return $tbls;
}
function makemenu($dc)
{
$cad="";
$cad.="<ul>\n";
$agrupos=array();
$agrupind=array();
foreach($dc->tablas as $tabla)
{
$agrupos[]=array($tabla->metatabla->grupo=>$tabla->metatabla->displayname);
$agrupind[$tabla->metatabla->grupo]=$tabla->metatabla->grupo;
$cad.="<li><a href='".$GLOBALS["ruta"]."list.php?tabla=".$tabla->nomtabla."'>".$tabla->metatabla->displayname."</a></li>\n";
}
print_r("<ul>\n");
foreach($agrupind as $indice)
{
print_r("<li><a href=''>".$indice."</a></li>\n");
print_r("<ul>\n");
foreach($agrupos as $enlace)
{
if(strlen($enlace[$indice])>0)
print_r("<li><a href=''>".$enlace[$indice]."</a></li>\n");
}
print_r("</ul>\n");
}
print_r("</ul>\n");
ksort($agrupos);
print_r($agrupos);
}
function compareobjects($obj1,$obj2)
{
$resultado = false;
//creo los objetos basados en ReflectionClass
$refObj1 = new ReflectionClass($obj1);
$refObj2 = new ReflectionClass($obj2);
//voy a comparar si ambos objetos tienen el mismo nombre de clase
if($refObj1->getName()==$refObj2->getName() )
{
//obtengo las propiedades de cada uno de los objetos
$aProp1=$refObj1->getProperties();
$aProp2=$refObj2->getProperties();
//voy a iterar entre todas las propiedades de los objetos
//como ya determine que ambos son de la misma clase
//ambos tienen la misma cantidad de propiedades
for($k=0;$k<sizeof($aProp2);$k++)
{
//si la propiedad es privada la coloco como accesible
if($aProp1[$k]->isPrivate())
{
$aProp1[$k]->setAccessible(true);
$aProp2[$k]->setAccessible(true);
}
//si la propiedad es protegida la coloco como accesible
if($aProp1[$k]->isProtected())
{
$aProp1[$k]->setAccessible(true);
$aProp2[$k]->setAccessible(true);
}
//comparo ambos valores
if($aProp1[$k]->getValue($obj1)==$aProp2[$k]->getValue($obj2))
$resultado = true;
else
{
//si una de las propiedades no es igual en ambos objetos
//termino el for
$resultado=false;
break 1;
}
}
}
else
$resultado = false;
return $resultado ;
}
?>
|