コード例 #1
0
ファイル: funcions.inc.php プロジェクト: JoseCOCA/baudprint
function PFN_mover_inc($dir)
{
    global $PFN_paths;
    $od = @opendir($dir);
    while ($cada = @readdir($od)) {
        if ($cada == '.' || $cada == '..') {
            continue;
        }
        if (is_dir($dir . $cada)) {
            PFN_mover_inc($dir . $cada . '/');
        } elseif (preg_match('/^\\..*(jpg|png|gif|jpeg)$/i', $cada) || preg_match('/^\\..*\\.INC$/', $cada)) {
            PFN_crea_directorio_recursivo($PFN_paths['extra'] . $dir);
            if (preg_match('/^\\..*(jpg|png|gif|jpeg)$/i', $cada)) {
                $destino = $PFN_paths['extra'] . $dir . '/' . substr($cada, 1);
            } elseif (preg_match('/^\\..*\\.INC$/', $cada)) {
                $destino = $PFN_paths['extra'] . $dir . '/' . substr($cada, 1, -4) . '.php';
            } else {
                $destino = $PFN_paths['extra'] . $dir . '/' . $cada;
            }
            if (@copy($dir . $cada, $destino)) {
                @unlink($dir . $cada);
            }
        }
    }
    @closedir($od);
}
コード例 #2
0
ファイル: class_extra.php プロジェクト: JoseCOCA/baudprint
 /**
  * function copiar (string $orixinal, string $destino)
  *
  * copia un fichero de información adicional
  * se usa siempre que se copie el fichero original asociado
  *
  * return boolean
  */
 function copiar($orixinal, $destino)
 {
     if (is_dir($destino)) {
         $orixinal = PFN_get_path_extra($orixinal);
         $destino = PFN_get_path_extra($destino);
     } else {
         $orixinal = $orixinal;
         $destino = $destino;
     }
     PFN_crea_directorio_recursivo(dirname($destino));
     $this->accions->rexistro(false);
     $ok = $this->accions->copiar($orixinal, $destino);
     $this->accions->rexistro(true);
     return $ok;
 }
コード例 #3
0
ファイル: class_inc.php プロジェクト: JoseCOCA/baudprint
 /**
  * function escribe_inc (string $cal, array $campos)
  * $cal: fichero original (no de datos adicionales)
  * $campos: array con los datos a escribir
  *
  * escribe el fichero de datos adicionales a partir de los
  * datos recibidos por $campos
  *
  * devuelve el nombre del fichero de datos adicionales escrito
  *
  * return string
  */
 function escribe_inc($cal, $campos)
 {
     $txt_arq = '';
     $txt_tmp = '';
     $nome_inc = $this->nome_inc($cal);
     foreach ($campos as $k => $v) {
         if (is_array($v) && trim($k) != '') {
             $txt_v2 = '';
             foreach ($v as $k2 => $v2) {
                 $v2 = trim($v2);
                 $k2 = trim($k2);
                 $txt_v2 .= strlen($k2) && strlen($v2) ? "'" . $k2 . "' => '" . $v2 . "'," : '';
             }
             if (!empty($txt_v2)) {
                 $txt_tmp .= "\n\t'" . $k . "' => array(" . $txt_v2;
                 $txt_tmp = substr($txt_tmp, 0, -1) . '),';
             }
         } else {
             if (trim($k) != '' && trim($v) != '') {
                 $txt_tmp .= "\n\t'" . $k . "' => '" . $v . "',";
             }
         }
     }
     if (!empty($txt_tmp)) {
         $txt_arq = "<?php\ndefined('OK') or die();" . "\nreturn array(" . substr($txt_tmp, 0, -1) . "\n);\n?>";
     }
     PFN_crea_directorio_recursivo(dirname($nome_inc));
     if ($this->arquivos->abre_escribe($nome_inc, $txt_arq)) {
         return $nome_inc;
     }
 }
コード例 #4
0
ファイル: class_imaxes.php プロジェクト: JoseCOCA/baudprint
 /**
  * function temporal (array $datos, integer $posX, integer $posY, integer $ancho, integer $alto, boolean $manter)
  * $datos: array de valores devueltos por getimagesize
  * $posX: coordenada X donde se pulsa sobre la imagen $tmp
  * $posY: coordenada Y donde se pulsa sobre la imagen $tmp
  * $ancho: ancho en pixels que se deben coger de la imagen $tmp
  * $ancho: alto en pixels que se deben coger de la imagen $tmp
  * $mantener: mantiene o no las proporciones originales (copia, recorte)
  *
  * crea una imágen temporal a partir de los valores ($datos) de otra
  * la imágen será creada con inicio en $posX y $posY respecto a la
  * imágen original $tmp y cogiendo la zona marcada por $ancho y $alto
  * para reducirla.
  * la reducción sera proporcional a la original con limites de configuración
  * de $this->conf->g('imaxes','ancho') y $this->conf->g('imaxes','alto') en caso
  * de que $mater sea true, en caso contrario se creará una imagen cuadrada
  * con tamaño exacto $this->conf->g('imaxes','ancho') y $this->conf->g('imaxes','alto').
  *
  * devuelve la ruta para poder ser visualizada por web
  *
  * return string
  */
 function _reducir($datos, $posX = 0, $posY = 0, $ancho = 0, $alto = 0, $manter = true)
 {
     switch ($datos[2]) {
         case 1:
             $imaxe = @imageCreateFromGIF($this->orixinal);
             break;
         case 2:
             $imaxe = @imageCreateFromJPEG($this->orixinal);
             break;
         case 3:
             $imaxe = @imageCreateFromPNG($this->orixinal);
             break;
         default:
             return false;
             break;
     }
     if (!$imaxe) {
         return 0;
     }
     if ($manter) {
         list($dX, $dY) = $this->proporcions($datos[0], $datos[1]);
         list($ancho, $alto) = array($datos[0], $datos[1]);
     } else {
         $dX = $this->conf->g('imaxes', 'ancho');
         $dY = $this->conf->g('imaxes', 'alto');
     }
     list($posX, $posY) = $this->maximos($datos, $posX, $posY, $ancho, $alto);
     // Si da problemas usar imagecreate
     if ($this->conf->g('gd2') == true) {
         $pequena = imageCreateTrueColor($dX, $dY);
     } else {
         $pequena = imageCreate($dX, $dY);
     }
     if (!$this->conf->g('gd2') || $dX == $datos[0] && ($dY = $datos[1]) || ($ancho < $dX || $alto < $dY)) {
         // imageCopyResampled no funciona correctamente ya que omite las coordenadas
         // de la imagen original y siempre recorta desde la esquina superior izquierda
         // pero mantengo el código en caso de que se solucione en la próximas versiones
         if (function_exists('imageCopyResampled')) {
             // ImageCopyResized || ImageCopyResampled:
             // $pequena: imagen a reducida a crear
             // $imaxe: imagen original
             // 0, 0: coordenadas de inicio para la nueva imagen
             // $posX: coordenada X donde se pulsa sobre la imagen original
             // $posY: coordenada Y donde se pulsa sobre la imagen original
             //				asi conseguimos que la imagen reducida empiece en las
             //				coordenadas escogidas en la imagen original
             // $dX: ancho en pixels que debe medir la imagen reducida
             // $dY: alto en pixels que debe medir la imagen reducida
             // $ancho: ancho en pixels de la imagen original que debe coger en la imagen reducida
             // $alto: alto en pixels de la imagen original que debe coger en la imagen reducida
             // echo "ImageCopyResized($pequena, $imaxe, 0, 0, $posX, $posY, $dX, $dY, $ancho, $alto)";
             // exit;
             //if (!ImageCopyResampled($pequena, $imaxe, 0, 0, $posX, $posY, $dX, $dY, $ancho, $alto)) {
             if (!@ImageCopyResampled($pequena, $imaxe, 0, 0, $posX, $posY, $dX, $dY, $ancho, $alto)) {
                 @ImageCopyResized($pequena, $imaxe, 0, 0, $posX, $posY, $dX, $dY, $ancho, $alto);
             }
         } else {
             @ImageCopyResized($pequena, $imaxe, 0, 0, $posX, $posY, $dX, $dY, $ancho, $alto);
         }
     } else {
         $this->imageCopyResampleBicubic($pequena, $imaxe, 0, 0, $posX, $posY, $dX, $dY, $ancho, $alto);
     }
     PFN_crea_directorio_recursivo(dirname($this->destino));
     if ($datos[2] == 1 && in_array(1, $this->conf->g('imaxes', 'validas'))) {
         imagecolortransparent($pequena, imagecolorallocate($imaxe, 0, 0, 0));
         $ok = @imageGIF($pequena, $this->destino, $this->conf->g('imaxes', 'calidade'));
     } elseif ($datos[2] == 3 && in_array(3, $this->conf->g('imaxes', 'validas'))) {
         imagecolortransparent($pequena, imagecolorallocate($imaxe, 0, 0, 0));
         $calidade = round($this->conf->g('imaxes', 'calidade') / 10);
         $calidade = $calidade < 0 ? 0 : ($calidade > 9 ? 9 : $calidade);
         $ok = @imagePNG($pequena, $this->destino, $calidade);
     } else {
         $ok = @imageJPEG($pequena, $this->destino, $this->conf->g('imaxes', 'calidade'));
     }
     if ($ok) {
         @imageDestroy($pequena);
         return true;
     }
 }
コード例 #5
0
ファイル: funcions.php プロジェクト: JoseCOCA/baudprint
/**
* function PFN_crea_dir_recursivo ($dir)
*
* Crea un directorio recursivamente
*
* return boolean
*/
function PFN_crea_directorio_recursivo($dir)
{
    $mode = 0755;
    if (is_dir($dir) || @mkdir($dir, $mode)) {
        return true;
    }
    if (!PFN_crea_directorio_recursivo(dirname($dir))) {
        return false;
    }
    return @mkdir($dir, $mode);
}