Ver Mensaje Individual
  #10 (permalink)  
Antiguo 10/06/2014, 05:27
reynierpm
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Procesar archivos subidos en WordPress (desde plugin en desarrollo)

Cita:
Iniciado por metacortex Ver Mensaje
Creo que llegué tarde aquí :)
Y tampoco es vital. Para un buen comienzo es suficiente con dominar PHP en un nivel medio y paralelamente familiarizarte poco a poco con los recursos de desarrollo disponibles en el software.

Me dio curiosidad saber cómo te quedó el código final, ya que mencionas que "el problema estaba en la comprobación" y asumí que te referías a check_admin_referer(), pero al mismo tiempo no veo la creación de nonce fields en el código posteado.
Bueno otros dos "" mas sobre el codigo siempre es bienvenido asi que no creo que sea tarde

Ahora bien, como bien comentas no creo que sea vital en este momento ponerme a inventar con clases en WP pues de la forma "comun y corriente" ya me ha dado buenos dolores de cabeza.

El nonce_fields si lo estoy usando, mas creo que no como deberia pues la comprobacion la estoy realizando con wp_verify_nonce() en vez de usar check_admin_referer() que nunca logre que funcionara, observa como quedo el codigo:

Código PHP:
add_action('init''uploadFileImportCSV');

function 
uploadFileImportCSV()
{
    
$wp_error true;
    global 
$wpdb;
    
$nonce = isset($_POST['_wpnonce']) ? $_POST['_wpnonce'] : null;

    if (isset(
$_POST['uploadfile_btn']) && wp_verify_nonce($nonce'wpnf_ft')) {
        
$uploadfiles $_FILES['uploadfiles'];

        if (
is_array($uploadfiles)) {
            foreach (
$uploadfiles['name'] as $key => $value) {
                if (
$uploadfiles['error'][$key] == 0) {

                    
$filetmp $uploadfiles['tmp_name'][$key];
                    
$filename $uploadfiles['name'][$key];

                    
$filetype wp_check_filetype(basename($filename), null);
                    
$filetitle preg_replace('/\.[^.]+$/'''basename($filename));
                    
$filename $filetitle '.' $filetype['ext'];
                    
$upload_dir wp_upload_dir();

                    
$fileCSV 'text/csv';
                    
$fileText 'text/plain';

                    if (!
in_array($filetype['type'], array($fileCSV$fileText))) {
                        echo 
"Error, the file $filename has not a valid mimetype: " $filetype["type"];
                        continue;
                    }

                    
$i 0;
                    while (
file_exists($upload_dir['path'] . '/' $filename)) {
                        
$filename $filetitle '_' $i '.' $filetype['ext'];
                        
$i++;
                    }

                    
$filedest $upload_dir['path'] . '/' $filename;

                    if (!
is_writeable($upload_dir['path'])) {
                        echo 
'Unable to write to directory %s. Is this directory writable by the server?';
                        return;
                    }

                    if (!
move_uploaded_file($filetmp$filedest)) {
                        echo 
"Error, the file $filetmp could not moved to : $filedest ";
                        continue;
                    }
                }
            }
        }

        
// Process the uploaded file
        
$csv array_map('str_getcsv'file($filedest));
    }

PD: Enviame un PM para agregarnos a Hangouts ya que estamos por aca por Caracas ambos
__________________
Reynier Perez Mira
Skype: reynierpm
Site: http://www.reynierpm.com