martes, 4 de octubre de 2011

Modificar una ruta Absoluta de un archivo en la Base de datos

Alguna vez has tenido la necesidad de cambiar de servidor tu proyecto y casualmente tienes en tus tablas de archivos rutas absolutas el cual deseas cambiarlo.

Bueno aquí comparto este script en PHP que busca una cadena dentro de la URL y la reemplaza  por la cadena que deseas.
















Aquí el Código


<?php
$cnn = mysql_connect('localhost', 'root', 'root');
mysql_select_db('name_bd');

$searchText = "/home/project1/www";

$replaceText = "/var/www/project1";

$result = mysql_query('SELECT id_file,chr_path FROM tb_file WHERE chr_path LIKE "%'.$searchText.'%"');

$count = 0;
while ($row = mysql_fetch_array($result)) {
    $count++;
    $newContent = str_replace($searchText, $replaceText, $row['chr_path']);
    //$newGuid = str_replace($searchText, $replaceText, $row['guid']);
 
    $query = sprintf("UPDATE tb_file SET chr_path='%s' WHERE id_file = {$row['id_file']}",
    mysql_real_escape_string($newContent));
 
    $update = mysql_query($query);
}
echo $count;
?>

viernes, 19 de agosto de 2011

Upload con Jquery en Joomla

Holas


Este es mi primer Post, voy agregar acerca de un problema que tuve agregando Uploads en joomla, sa sabe que joomla trabaja con mootools, pero necesitaba crear uno con Jquery, y aparte que mi componente estaba trabajando con el Framework xajax así que tenía que buscar una solución. Despues de casi todo un día laboral buscando una solución encontré una solución y bien documentada.


http://www.uploadify.com

Este sitio Web te ofrece unas librerias que ayudan a realizar un upload independientemente de un Framework, CMS, o cualquier proyecto que tengas, en este caso usaré Joomla.


Paso 1: Descargamos la última versión de la librería
 http://www.uploadify.com/wp-content/uploads/uploadify-v2.1.4.zip


Paso 2: Descomprimimos y observamos dentro de la carpeta que existen archivos con extensiones, js, css, swf, etc  copiamos todos menos la carpeta com si la carpeta no existe no hay problema, en nuestro componente en la raíz de ello creamos una carpeta llamado upload y pegamos dentro de ello todos los archivos que copiamos.


Quedaría algo similar a la imagen siguiente donde se ha creado la carpeta upload dentro de mi componente y se pego los archivos del comprimido.




Paso 3: Dentro del archivo view.html.php de nuestra vista, nos vamos al método display, esta función se encarga de disparar comandos según la tarea que envía el controlador, bueno sea la tarea que sea, tenemos que agregar estas lineas:



$host = JURI::root();

$document =& JFactory::getDocument();
$document->addScript($host.'administrator/components/com_mycomponent/assets/js/jquery-1.5.1.min.js');                                        
                    
 $document->addScript($host.'administrator/components/com_mycomponent/upload/swfobject.js');
$document->addScript($host.'administrator/components/com_mycomponent/upload/jquery.uploadify.v2.1.4.min.js');                   
$document->addStyleSheet($host.'administrator/components/com_mycomponent/upload/uploadify.css'); 


Con estas lineas estamos cargando las librerías y estilos que tendrá nuestro botón de upload.


Seguidamente agregamos el Jquery que aperturará el funcionamiento de las librerías



$swfUploadHeadJs ="$(document).ready(function() {
                                        $('#uploadify').uploadify({
                                                'uploader'       : 'components/com_storage/upload/uploadify.swf',
                                                'script'         : 'components/com_storage/upload/uploadify.php',
                                                'cancelImg'      : 'cancel.png',
                                                'folder'         : 'components/com_storage/files',
                                                'queueID'        : 'fileQueue',
                                                'auto'           : true,
                                                'multi'          : true,
                                                'onComplete'  : function(event, ID, fileObj, response, data) {
                                                      //alert('There are ' + response + ' files remaining in the queue.');
                                                      xajax_uploadFile(response, ".$id_equipment_detail.");
                                                    }
                                        });
                                });";                    


//add the javascript to the head of the html document
$document->addScriptDeclaration($swfUploadHeadJs);


Jquery, carga de los archivos a usar y la ruta donde se guardaran los archivos




  


Esto último carga el evento de inicio del Jquery que es la que llamará a los demás recursos.


En la función onComplete: llamo a un método xajax como parámetros el nombre del archivo cargado y una variable que me sirve, puedes crear cualquier método javascript o simplemente no usarlo, con esto ya aseguras que el archivo suba al servidor


Bueno hasta Aquí tenemos cargados las librerías, el código Jquery, el controlador al envíar la tarea, el método display buscará la tarea y ejecutará todo el código anterior.


Paso 4: Ahora vamos al Layout de la vista que estuvimos programando, ahí supongo que se tendrá una interface con su propio estilo así que aquí solamente necesitamos agregar la siguiente linea:


<input type="file" name="uploadify" id="uploadify" />


Hasta aquí tenemos ya la funcionalidad de que se explore el archivo y se seleccione el archivo a subir, ahora veremos donde subir el archivo, en mi componente se ha creado una carpeta llamada files donde almacenaré todos los files que suba.


Dentro de la carpeta upload se encuentra el archivo uploadfy.php, abrimos para editarlo y haremos unos cambios, que quería así :


Edición opcional del archivo para darle permiso a los archivos que voy subiendo


Originalmente viene con la linea 47 que te devuelve la ruta absoluta del archivo, yo hice agregaciones del 41 al 46 que simplemente le da permisos ar archivo y captura solo el nombre del archivo que se suba por necesidad de mi propio algoritmo.


Aya no olviden dar permisos de escritura a la carpeta files/ y también a todos los archivos de la carpeta upload/


Cualquier consulta con las librerías comenten o revisen la documentación de la librería que esta en su sitio web.