miriamdepaula

WordPress: Simple Uploader field

Nov 23rd, 2011
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.84 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Form builder helper
  4.  *
  5.  * @param string $label Field label
  6.  * @return none
  7.  */
  8. function fileupload( $label ) { ?>
  9.   <tr>
  10.     <td class="left_label"> <?php
  11.       echo $label; ?>
  12.     </td>
  13.     <td>
  14.       <form name="uploadfile" id="uploadfile_form" method="POST" enctype="multipart/form-data" action="<?php echo $this->filepath.'#uploadfile'; ?>" accept-charset="utf-8" >
  15.         <input type="file" name="uploadfiles[]" id="uploadfiles" size="35" class="uploadfiles" />
  16.         <input class="button-primary" type="submit" name="uploadfile" id="uploadfile_btn" value="Upload"  />
  17.       </form>
  18.     </td>
  19.   </tr>  <?php
  20. }
  21.  
  22. /**
  23.  * Handle file uploads
  24.  *
  25.  * @todo check nonces
  26.  * @todo check file size
  27.  *
  28.  * @return none
  29.  */
  30. function fileupload_process() {
  31.   $uploadfiles = $_FILES['uploadfiles'];
  32.  
  33.   if (is_array($uploadfiles)) {
  34.  
  35.     foreach ($uploadfiles['name'] as $key => $value) {
  36.  
  37.       // look only for uploded files
  38.       if ($uploadfiles['error'][$key] == 0) {
  39.  
  40.         $filetmp = $uploadfiles['tmp_name'][$key];
  41.  
  42.         //clean filename and extract extension
  43.         $filename = $uploadfiles['name'][$key];
  44.  
  45.         // get file info
  46.         // @fixme: wp checks the file extension....
  47.         $filetype = wp_check_filetype( basename( $filename ), null );
  48.         $filetitle = preg_replace('/\.[^.]+$/', '', basename( $filename ) );
  49.         $filename = $filetitle . '.' . $filetype['ext'];
  50.         $upload_dir = wp_upload_dir();
  51.  
  52.         /**
  53.          * Check if the filename already exist in the directory and rename the
  54.          * file if necessary
  55.          */
  56.         $i = 0;
  57.         while ( file_exists( $upload_dir['path'] .'/' . $filename ) ) {
  58.           $filename = $filetitle . '_' . $i . '.' . $filetype['ext'];
  59.           $i++;
  60.         }
  61.         $filedest = $upload_dir['path'] . '/' . $filename;
  62.  
  63.         /**
  64.          * Check write permissions
  65.          */
  66.         if ( !is_writeable( $upload_dir['path'] ) ) {
  67.           $this->msg_e('Unable to write to directory %s. Is this directory writable by the server?');
  68.           return;
  69.         }
  70.  
  71.         /**
  72.          * Save temporary file to uploads dir
  73.          */
  74.         if ( !@move_uploaded_file($filetmp, $filedest) ){
  75.           $this->msg_e("Error, the file $filetmp could not moved to : $filedest ");
  76.           continue;
  77.         }
  78.  
  79.         $attachment = array(
  80.           'post_mime_type' => $filetype['type'],
  81.           'post_title' => $filetitle,
  82.           'post_content' => '',
  83.           'post_status' => 'inherit'
  84.         );
  85.  
  86.         $attach_id = wp_insert_attachment( $attachment, $filedest );
  87.         require_once( ABSPATH . "wp-admin" . '/includes/image.php' );
  88.         $attach_data = wp_generate_attachment_metadata( $attach_id, $filedest );
  89.         wp_update_attachment_metadata( $attach_id,  $attach_data );
  90.       }
  91.     }
  92.   }
  93. }
  94. ?>
  95.  
Advertisement
Add Comment
Please, Sign In to add comment