Buenas Ignacio, tengo que hacerte unas sugerencias/peticiones sobre WebDataSource.
Hace tiempo que usamos esta joya WebDataSource, creo que es de las mejores cosas que tiene Xailer ya que nos permite conectar 2 mundos escritorio y Web de forma extraordinaria.
Nosotros hicimos algunas ampliaciones a WebDataSource hace un par de años y empezamos a usar nuestro propio WebDataSource y ahora veo que estamos “separados” del canónico y queremos volver al redil, arrepentidos quiere el Señor……
Revisando el último WebDataSource de la versión 8.2.3 veo que algunas cosas que hicimos ya están en la versión oficial, pero hecho en falta alguna, te cuento….
Hay 3 métodos que hicimos y que la versión original no tiene que son Directory(), CurDir() y ChhDir() y que puedo sobrecargar pero que si tienes a bien puedes implementar puesto que me parecen muy útiles. Te dejo nuestro código fuente por si te interesa ver como lo hacemos, aunque supongo que preferirás en caso de implementarlo hacer el tuyo propio. Gracias.
METHOD Directory( cDir ) // --> aDir
*Código PRG*************************************
METHOD Directory( cDir ) CLASS XWebDataSource
LOCAL aDir:={}, cData := ""
IF !::Ready( .t. )
RETURN .f.
Endif
cData := cDir
If ::Request( "directory", @cData )
::XmlLoad( cData )
RETURN ::XmlData()
Endif
RETURN cData
*Código PHP*************************************
function XA_Directory( $cDir ) {
$aDir = array();
if (is_dir($cDir)){
if ($dh = opendir($cDir)){
while (($file = readdir($dh)) !== false){
$aLin = array();
$aLin[] = $file;
$aLin[] = is_dir($cDir.'/'.$file);
if ( is_file($cDir.'/'.$file) )
$aLin[] = filesize($cDir.'/'.$file) ;
else
$aLin[] = 0 ;
$aLin[] = date("Y-m-d H:i:s", filectime($cDir.'/'.$file));
$aLin[] = $cDir.'/'.$file;
$aDir[] = $aLin;
}
closedir($dh);
}
}
XA_AddData( 'Data', $aDir );
return;
}
//------------------------------------------------------------------------------
METHOD CurDir( ) // --> Current directory
*Código PRG*************************************
METHOD CurDir( ) CLASS XWebDataSource
LOCAL cData := "Nil", cDir := ""
IF !::Ready( .t. )
RETURN ""
Endif
IF ::Request( "Curdir", @cData )
::XmlLoad( cData )
cDir := ::XmlTag( "curdir" )
Endif
RETURN cDir
*Código PHP*************************************
function XA_Curdir( ) {
$cDir = getcwd( );
XA_AddData( 'curdir', $cDir );
return;
}
METHOD ChDir( cDir ) // --> lSuccess
*Código PRG*************************************
METHOD ChDir( cDir ) CLASS XWebDataSource
LOCAL cData := "", lOk:=.F.
cData := cDir
IF !::Ready( .t. )
RETURN ""
Endif
IF ::Request( "Chdir", @cData )
::XmlLoad( cData )
lOk := ::XmlTag( "chdir" )
Endif
RETURN lOk
*Código PHP*************************************
function XA_Chdir( $cDir ) {
If( file_exists($cDir) ) {
$cDir = chdir( $cDir );
XA_AddData( 'chdir', $cDir );
} else {
XA_AddError( 'Error: directory not exists chdir failed'.$cDir );
}
return;
}
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
WebdataSource, sugerencias
WebdataSource, sugerencias
BiSoft Desarrollo de software profesional
http://www.bisoft.es
http://www.bisoft.es
- ignacio
- Site Admin
- Mensajes: 9255
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: WebdataSource, sugerencias
Hola,
Ya tenemos esos métodos:
Un saludo
Nota: Desaconsejo el uso de ChDir(). Tiene más sentido poner el path RELATIVO desde la ubicación del PHP
Ya tenemos esos métodos:
- CurrentDir()
- Adirs()
- Afiles()
- ForceDir()
Un saludo
Nota: Desaconsejo el uso de ChDir(). Tiene más sentido poner el path RELATIVO desde la ubicación del PHP
Re: WebdataSource, sugerencias
Pues ahora si que quedo como un tonto
Otros métodos que yo llamé diferente ya me he dado cuenta de cuales eran, se ve que no he mirado bien.
Pero por ejemplo Adirs y Afiles supongo que diferencia han de tener, en el manual ni aparecen.
ForceDir si que aparece y veo que es parta crear un directorio recurrente, pero que he de usar para cambiar a un directorio que ya existe, ese mismo método?
Gracias..
Otros métodos que yo llamé diferente ya me he dado cuenta de cuales eran, se ve que no he mirado bien.
Pero por ejemplo Adirs y Afiles supongo que diferencia han de tener, en el manual ni aparecen.
ForceDir si que aparece y veo que es parta crear un directorio recurrente, pero que he de usar para cambiar a un directorio que ya existe, ese mismo método?
Gracias..
BiSoft Desarrollo de software profesional
http://www.bisoft.es
http://www.bisoft.es
- ignacio
- Site Admin
- Mensajes: 9255
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: WebdataSource, sugerencias
Veo que efectivamente no están documentados. No obstante son bien sencillos. Una matriz con la lista y punto.
Un saludo
Ya he comentado que no soy partidario de cambiar de directorio. ChDir() no se ha hecho.ForceDir si que aparece y veo que es parta crear un directorio recurrente, pero que he de usar para cambiar a un directorio que ya existe, ese mismo método?
Un saludo
-
- Mensajes: 123
- Registrado: Mié Jun 16, 2010 2:33 pm
Re: WebdataSource, sugerencias
Buenas,
Yo lo que uso es lo siguiente:
::oWebDataSource1:UploadFile("../HIPERCALZADO/Datos.CSV",cDatoCsv)
Yo lo que uso es lo siguiente:
::oWebDataSource1:UploadFile("../HIPERCALZADO/Datos.CSV",cDatoCsv)