• Viernes 8 de Noviembre de 2024, 09:47

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - objetivophp

Páginas: [1]
1
PHP / [Código Fuente] Recorrer Directorio
« en: Lunes 6 de Diciembre de 2010, 03:48 »
Código: [Seleccionar]
<?php
/**
 * Clase Directorio.
 * Se encarga de recorrer directorios y proporcionar informacion de los archivos y
 * directorios que contiene.
 *
 * @package     archivos creado en el projecto opet
 * @copyright   2010 - ObjetivoPHP
 * @license     Gratuito (Free) http://www.opensource.org/licenses/gpl-license.html
 * @author      Marcelo Castro (ObjetivoPHP)
 * @li<x>nk        objetivophp@******.***.**
 * @version     0.4.0 (24/03/2009 - 28/11/2010)
 */
class Directorio
{
    
/**
     * Especifica que tipo de listado se retornara.
     * En este caso solo se listan los directorios.
     */
    
const OP_LIST_DIRECTORIOS 1;

    
/**
     * Especifica que tipo de listado se retornara.
     * En este caso solo se listan los archivos.
     */
    
const OP_LIST_ARCHIVOS    2;

    
/**
     * Especifica que tipo de listado se retornara.
     * En este caso lista directorios y archivos.
     */
    
const OP_LIST_AMBOS       3;

    
/**
     * Solo se accedera de este directorio hacia abajo a sus hijos no se listan
     * los padres del directorio. Es el directorio ba<x>se.
     * @var string
     */
    
private $_dirba<x>se './';

    
/**
     * Marca cuantos directorios hacia abajo listara. Con cero solo listara el
     * directorio ba<x>se.
     * @var integer
     */
    
private $_profundidadEscaneo 0;

    
/**
     * Configuramos que tipo de resultados queremos. Solo archivos solo
     * directorios o retorna ambos.
     * @var integer
     */
    
private $_listarDir 3;

    
/**
     * Contiene los tipos de archivos que se listaran.
     * @var array
     */
    
private $_tipoArchivos = array();

    
/**
     * Guarda los resultados de la busqueda.
     * @var array
     */
    
private $_resultados = array();
    
    
/**
     * Metodo __construct.
     * @param   string $dirExploracion  Directorio ba<x>se de la exploracion.
     *                                  No se puede utilizar ../ en caso de necesitar
     *                                  y hacia atras utilizar direcciones absolutas.
     * @return  void
     */
    
public function  __construct($dirExploracion)
    {
        if (
strpos('../' $dirExploracion)) {
            
trigger_error('Directorio de Exploracion no valido.' E_USER_ERROR);
        }
        
$this->_dirba<x>se $dirExploracion;
        
date_default_timezone_set('America/Montevideo');
    }

    
/**
     * Metodo setProfundidadEscaneo.
     * @param   integer $profundidad    Cantidad de directorios que se analizaran
     *                                  en cascada.
     * @return  void
     */
    
public function setProfundidadEscaneo($profundidad 0)
    {
        
$this->_profundidadEscaneo = (int) $profundidad;
    }

    
/**
     * Metodo setListarDirectorios.
     * @param   integer     $dir 1 directorios 2 archivos 3 ambos.
     * @return  void
     */
    
public function setListarDirectorios($listado 3)
    {
        switch (
$listado) {
            case 
Directorio::OP_LIST_DIRECTORIOS:
                
$this->_listarDir   Directorio::OP_LIST_DIRECTORIOS;
                break;
            case 
Directorio::OP_LIST_ARCHIVOS:
                
$this->_listarDir   Directorio::OP_LIST_ARCHIVOS;
                break;
            case 
Directorio::OP_LIST_AMBOS:
                
$this->_listarDir   Directorio::OP_LIST_AMBOS;
                break;
            default :
                
$this->_listarDir   Directorio::OP_LIST_AMBOS;
        }
    }

    
/**
     * Metodo addTiposArchivosListar.
     * @param   string  $extencion  Extencion de los archivos a listar.
     * @return  void
     */
    
public function addTiposArchivosListar($extencion)
    {
        
$this->_tipoArchivos[] = addslashes($extencion);
    }

    
/**
     * Metodo listar.
     * Enruta las peticiones de listado al metodo correspondiente y retorna
     * los datos obtenidos.
     * @return array
     */
    
public function listar()
    {
        switch (
$this->_listarDir) {
            case 
Directorio::OP_LIST_DIRECTORIOS:
                
$this->_listarDirectorios();
                break;
            case 
Directorio::OP_LIST_ARCHIVOS:
                
$this->_listarArchivos();
                break;
            case 
Directorio::OP_LIST_AMBOS:
                
$this->_listarTodo();
                break;
            default :
                
$this->_listarTodo();
        }
        return 
$this->_resultados;
    }


    
/**
     * Metodo ordenar.
     * Ordena los resultados de acuerdo a la clave elegida.
     * @param   string  $clave  Clave por la cual se quiere ordenar.
     * @param   boolean $asc    true para ascendente false para descendente.
     * @return  array
     */
    
public function ordenar($clave 'name' $asc true)
    {
        if (empty(
$this->_resultados)) {
            return 
false;
            
//trigger_error('Primero debe usar la funcion listar o getNombresArchivos' E_USER_ERROR);
        
}

        
$tiposOrden = array('date' 'dateUpdate' 'size' 'hash' 'name' 'nameSort' 'extencion' );
        
$ordenarPor = (in_array($clave $tiposOrden))? $clave 'name';
        
$ascDesc    = ($asc)? SORT_ASC SORT_DESC;
        
$caracter   0;

        foreach (
$this->_resultados as $ordenado) {
            
$tmpArray[] = $ordenado[$ordenarPor];
            
$caracter   is_string($ordenado[$ordenarPor])? $caracter+$caracter;
        }
        
        
$numero     = ($caracter)? SORT_STRING SORT_NUMERIC;

        
array_multisort($tmpArray $ascDesc $numero $this->_resultados);
        return 
$this->_resultados;
    }

    
/**
     * Metodo _listarArchivos.
     * Genera el arreglo de resultados correspondiente solo a archivos.
     * @return void
     */
    
public function _listarArchivos()
    {
        
$objIterator = new RecursiveIteratorIterator($obj_Directory = new RecursiveDirectoryIterator($this->_dirba<x>se)
                                                     
RecursiveIteratorIterator::SELF_FIRST);
        
$objIterator->setMaxDepth($this->_profundidadEscaneo);
        
// Recorro los Archivos.
        
foreach ($objIterator as $file) {
            if (
is_file($file)) {
                
$ext        substr($file strripos($file '.')+1);
                if (
in_array($ext $this->_tipoArchivos)) {
                    
$this->_resultados[$file->__toString()] = array('date'      => date("Y-m-d H:i"$obj_Directory->getATime())
                                                                    
'dateUpdate'=> date("Y-m-d H:i"$obj_Directory->getMTime())
                                                                    
'size'      => filesize($file)//$obj_Directory->getSize()
                                                                    
'hash'      => sha1_file($file)
                                                                    
'name'      => substr($file strripos($file DIRECTORY_SEPARATOR )+1)
                                                                    
'nameSort'  => strtolower(substr($file strripos($file DIRECTORY_SEPARATOR )+1))
                                                                    
'extencion' => substr($file strripos($file '.' )+1));
                }
            }
        }
        
ksort($this->_resultados);
    }

    
/**
     * Metodo _listarDirectorios.
     * Genera el arreglo de resultados correspondiente solo a directorios.
     * @return void
     */
    
public function _listarDirectorios()
    {
        
$objIterator = new RecursiveIteratorIterator($obj_Directory = new RecursiveDirectoryIterator($this->_dirba<x>se)
                                                     
RecursiveIteratorIterator::SELF_FIRST);
        
$objIterator->setMaxDepth($this->_profundidadEscaneo);
        
// Recorro los directorios.
        
foreach ($objIterator as $file) {
            if (
is_dir($file)) {
                
$this->_resultados[$file->__toString()] = array('date'      => date("d-m-Y H:i"$obj_Directory->getATime())
                                                                
'dateUpdate'=> date("d-m-Y H:i"$obj_Directory->getMTime()));
            }
        }
    }

    
/**
     * Metodo _listarTodo.
     * Genera el arreglo de resultados correspondiente a directorios y archivos.
     * @return void
     */
    
public function _listarTodo()
    {
        
$this->_listarDirectorios();
        
$this->_listarArchivos();
        
ksort($this->_resultados);
    }

    
/**
     * Metodo getNombresArchivos.
     * Retorna solo los nombre de archivos.
     * @return array
     */
    
public function getNombresArchivos()
    {
        
$objIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->_dirba<x>se)
                                                     
RecursiveIteratorIterator::SELF_FIRST);
        
$objIterator->setMaxDepth($this->_profundidadEscaneo);
        
// Recorro los Archivos.
        
foreach ($objIterator as $file) {
            if (
is_file($file)) {
                
$ext        substr($file strripos($file '.')+1);
                if (
in_array($ext $this->_tipoArchivos)) {
                    
$this->_resultados[] = substr($file strripos($file DIRECTORY_SEPARATOR )+1);
                }
            }
        }
        return 
$this->_resultados;
    }

    
/**
     * Metodo formatearSize.
     * Formatea la salida del tamaño de un archivo a una unidad mas estandarizada.
     * @version Desde Version 0.4.0 (28/11/2010)
     * @param   integer $tamanio    Tamaño del archivo en Bytes.
     * @param   integer $decimales  Decimales de la salida.
     * @param   boolean $uMedida    Si se pone la unidad de medida.
     * @return  string              Cadena Formateada.
     */
    
public static function formatearSize($tamanio $decimales 2  $uMedida true) {
        
$unidad     = array(' B' ' KB' ' MB' ' GB' ' TB' 'PB' 'EB' 'ZB' 'YB');
        
$potencia   floor(log((int)$tamanio) / log(1024));
        
$formatSize number_format($tamanio pow(1024$potencia) (int) $decimales);
        
$formatSize = ($uMedida)? $formatSize $unidad[$potencia] : $formatSize;

        return 
$formatSize;
    }
}


Para ver su utilizacion: http://objetivophp.com/?p=100

Autor: objetivophp.com

http://objetivophp.esp.st

Descarga: http://objetivophp.com/?p=100

2
PHP / [Código Fuente] DEAME3P - Exporta archivos excel 2007 a MySQL
« en: Lunes 7 de Septiembre de 2009, 23:31 »
Deame3p es una rutina programada en PHP 5 que exporta datos contenidos en archivos Excel 2007 (Probado con versiones mayores a Excel 2003) a MySQL.
Las diferencias con otras soluciones de exportación son básicamente las siguientes:

    * nos permite la vinculación o asociación de los campos de la base de datos MySQL con los nombres de las columnas del archivo Excel no siendo necesario que sus nombres coincidan.
    * Intenta la búsqueda de claves foráneas en la base de datos para así proporcionarnos opciones de exportación realizado para tablas tipo MyISAM por lo cual la clave foránea debe tener el mismo nombre que en la tabla donde es clave principal o única.
    * Con los campos AUTOINCREMENT nos da la posibilidad de mantener los datos de la planilla Excel o que la base siga numerando sola.(Se aconseja esta ultima opción para no provocar errores por duplicación).
    * Soporta dos modos INSERCION pura de datos o si una clave se Duplica se puede ACTUALIZAR esa línea.
    * Contiene funciones básicas de formateo de campos entre ellos se encuentran varchar Date DateTimeTimeStamp Time Year(4) tinyint smallint mediumint int bigint bool boolean bit floatdouble set y enum. Además de incluir un método por defecto para los campos no implementados.
    * En el caso que administremos el servidor web permite la configuración de variables sensibles a la rutina como el consumo de memoria y el límite de tiempo máximo que puede ejecutarse.
    * Nos permite codificar la entrada a UTF8 o dejarla como se encuentra en la planilla Excel.

Deame3p debe ser usado para tablas ya existentes no crea tablas si no que inserta registros en ellas.

Autor: ObjetivoPHP

http://objetivophp.esp.st

3
PHP / [Código Fuente] Convertidor de bases Numericas
« en: Jueves 21 de Agosto de 2008, 01:15 »
Esta pequeña rutina es capaz de convertir numeros de una base a otra. La capacidad de conversion es de base 2 a  62 utilizando para ellos los digitos del 0 al 9 letras mayusculas de la A a la Z y minusculas de la a a la z.
20/08/2008 Subida version 0.3 arreglo de error  con los ceros finales descubierto por W.Sosa.

Autor: Marcelo Castro

http://objetivophp.esp.st

4
PHP / [Código Fuente] Exportar Excel a MySQL
« en: Martes 12 de Agosto de 2008, 05:39 »
DEAME3P Version 3 Final es una rutina para exportacion de planillas electronicas Excel compatible hasta 2003 a MySQL  permitiendo relacionar columnas(Excel)  con Campos (MySQL) entre otras caracteristicas en caso de campos que sean claves foraneas nos permite cambiar su valor al identificador que tiene en la tabla que es clave.

Autor: Marcelo Castro

http://objetivophp.esp.st

Páginas: [1]