Exemple #1
0
 /**
  * Function for uploading of images via the upload form
  * 
  * @class nggAdmin
  * @return void
  */
 function upload_images()
 {
     global $nggdb;
     // WPMU action
     if (nggWPMU::check_quota()) {
         return;
     }
     // Images must be an array
     $imageslist = array();
     // get selected gallery
     $galleryID = (int) $_POST['galleryselect'];
     if ($galleryID == 0) {
         nggGallery::show_error(__('No gallery selected !', 'nggallery'));
         return;
     }
     // get the path to the gallery
     $gallery = $nggdb->find_gallery($galleryID);
     if (empty($gallery->path)) {
         nggGallery::show_error(__('Failure in database, no gallery path set !', 'nggallery'));
         return;
     }
     // read list of images
     $dirlist = nggAdmin::scandir($gallery->abspath);
     $imagefiles = $_FILES['imagefiles'];
     if (is_array($imagefiles)) {
         foreach ($imagefiles['name'] as $key => $value) {
             // look only for uploded files
             if ($imagefiles['error'][$key] == 0) {
                 $temp_file = $imagefiles['tmp_name'][$key];
                 //clean filename and extract extension
                 $filepart = nggGallery::fileinfo($imagefiles['name'][$key]);
                 $filename = $filepart['basename'];
                 // check for allowed extension and if it's an image file
                 $ext = array('jpg', 'png', 'gif');
                 if (!in_array($filepart['extension'], $ext) || !@getimagesize($temp_file)) {
                     nggGallery::show_error('<strong>' . $imagefiles['name'][$key] . ' </strong>' . __('is no valid image file!', 'nggallery'));
                     continue;
                 }
                 // check if this filename already exist in the folder
                 $i = 0;
                 while (in_array($filename, $dirlist)) {
                     $filename = $filepart['filename'] . '_' . $i++ . '.' . $filepart['extension'];
                 }
                 $dest_file = $gallery->abspath . '/' . $filename;
                 //check for folder permission
                 if (!is_writeable($gallery->abspath)) {
                     $message = sprintf(__('Unable to write to directory %s. Is this directory writable by the server?', 'nggallery'), $gallery->abspath);
                     nggGallery::show_error($message);
                     return;
                 }
                 // save temp file to gallery
                 if (!@move_uploaded_file($temp_file, $dest_file)) {
                     nggGallery::show_error(__('Error, the file could not be moved to : ', 'nggallery') . $dest_file);
                     nggAdmin::check_safemode($gallery->abspath);
                     continue;
                 }
                 if (!nggAdmin::chmod($dest_file)) {
                     nggGallery::show_error(__('Error, the file permissions could not be set', 'nggallery'));
                     continue;
                 }
                 // add to imagelist & dirlist
                 $imageslist[] = $filename;
                 $dirlist[] = $filename;
             }
         }
     }
     if (count($imageslist) > 0) {
         // add images to database
         $image_ids = nggAdmin::add_Images($galleryID, $imageslist);
         //create thumbnails
         nggAdmin::do_ajax_operation('create_thumbnail', $image_ids, __('Create new thumbnails', 'nggallery'));
         //add the preview image if needed
         nggAdmin::set_gallery_preview($galleryID);
         nggGallery::show_message(count($image_ids) . __(' Image(s) successfully added', 'nggallery'));
     }
     return;
 }
Exemple #2
0
 /**
  * Method "ngg.uploadImage"
  * Uploads a image to a gallery
  *
  * @since 1.4
  * 
  * @copyright addapted from WP Core
  * @param array $args Method parameters.
  * 			- int blog_id
  *	    	- string username
  *	    	- string password
  *	    	- struct data
  *	          o string name
  *            o string type (optional)
  *	          o base64 bits 
  *	          o bool overwrite (optional)
  *			  o int gallery 
  *			  o int image_id  (optional) 	 
  * @return array with image meta data
  */
 function uploadImage($args)
 {
     global $wpdb;
     require_once dirname(dirname(__FILE__)) . '/admin/functions.php';
     // admin functions
     require_once 'meta.php';
     // meta data import
     $blog_ID = (int) $args[0];
     $username = $wpdb->escape($args[1]);
     $password = $wpdb->escape($args[2]);
     $data = $args[3];
     $name = $data['name'];
     $type = $data['type'];
     $bits = $data['bits'];
     // gallery & image id
     $gid = (int) $data['gallery'];
     // required field
     $pid = (int) $data['image_id'];
     // optional but more foolproof of overwrite
     $image = false;
     // container for the image object
     logIO('O', '(NGG) Received ' . strlen($bits) . ' bytes');
     if (!($user = $this->login($username, $password))) {
         return $this->error;
     }
     // Check if you have the correct capability for upload
     if (!current_user_can('NextGEN Upload images')) {
         logIO('O', '(NGG) User does not have upload_files capability');
         $this->error = new IXR_Error(401, __('You are not allowed to upload files to this site.'));
         return $this->error;
     }
     // Look for the gallery , could we find it ?
     if (!($gallery = nggdb::find_gallery($gid))) {
         return new IXR_Error(404, __('Could not find gallery ' . $gid));
     }
     // Now check if you have the correct capability for this gallery
     if (!nggAdmin::can_manage_this_gallery($gallery->author)) {
         logIO('O', '(NGG) User does not have upload_files capability');
         $this->error = new IXR_Error(401, __('You are not allowed to upload files to this gallery.'));
         return $this->error;
     }
     //clean filename and extract extension
     $filepart = nggGallery::fileinfo($name);
     $name = $filepart['basename'];
     // check for allowed extension and if it's an image file
     $ext = array('jpg', 'png', 'gif');
     if (!in_array($filepart['extension'], $ext)) {
         logIO('O', '(NGG) Not allowed file type');
         $this->error = new IXR_Error(401, __('This is no valid image file.', 'nggallery'));
         return $this->error;
     }
     // in the case you would overwrite the image, let's delete the old one first
     if (!empty($data["overwrite"]) && $data["overwrite"] == true) {
         // search for the image based on the filename, if it's not already provided
         if ($pid == 0) {
             $pid = $wpdb->get_col(" SELECT pid FROM {$wpdb->nggpictures} WHERE filename = '{$name}' AND galleryid = '{$gid}' ");
         }
         if (!($image = nggdb::find_image($pid))) {
             return new IXR_Error(404, __('Could not find image id ' . $pid));
         }
         // sync the gallery<->image parameter, otherwise we may copy it to the wrong gallery
         $gallery = $image;
         // delete now the image
         if (!@unlink($image->imagePath)) {
             $errorString = sprintf(__('Failed to delete image %1$s ', 'nggallery'), $image->imagePath);
             logIO('O', '(NGG) ' . $errorString);
             return new IXR_Error(500, $errorString);
         }
     }
     // upload routine from wp core, load first the image to the upload folder, $upload['file'] contain the path
     $upload = wp_upload_bits($name, $type, $bits);
     if (!empty($upload['error'])) {
         $errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
         logIO('O', '(NGG) ' . $errorString);
         return new IXR_Error(500, $errorString);
     }
     // this is the dir to the gallery
     $path = WINABSPATH . $gallery->path;
     // check if the filename already exist, if not add a counter index
     $filename = wp_unique_filename($path, $name);
     $destination = $path . '/' . $filename;
     // Move files to gallery folder
     if (!@rename($upload['file'], $destination)) {
         $errorString = sprintf(__('Failed to move image %1$s to %2$s', 'nggallery'), '<strong>' . $upload['file'] . '</strong>', $destination);
         logIO('O', '(NGG) ' . $errorString);
         return new IXR_Error(500, $errorString);
     }
     //add to database if it's a new image
     if (empty($data["overwrite"]) || $data["overwrite"] == false) {
         $pid_array = nggAdmin::add_Images($gallery->gid, array($filename));
         // the first element is our new image id
         if (count($pid_array) == 1) {
             $pid = $pid_array[0];
         }
     }
     //get all information about the image, in the case it's a new one
     if (!$image) {
         $image = nggdb::find_image($pid);
     }
     // create again the thumbnail, should return a '1'
     nggAdmin::create_thumbnail($image);
     return apply_filters('ngg_upload_image', $image);
 }
 /**
  * nggAdmin::import_gallery()
  * TODO: Check permission of existing thumb folder & images
  *
  * @class nggAdmin
  * @param string $galleryfolder contains relative path to the gallery itself
  * @return void
  */
 static function import_gallery($galleryfolder, $gallery_id = NULL)
 {
     global $wpdb, $user_ID;
     // get the current user ID
     wp_get_current_user();
     $created_msg = '';
     // remove trailing slash at the end, if somebody use it
     $galleryfolder = untrailingslashit($galleryfolder);
     $fs = C_Fs::get_instance();
     if (is_null($gallery_id)) {
         $gallerypath = $fs->join_paths($fs->get_document_root('content'), $galleryfolder);
     } else {
         $storage = C_Gallery_Storage::get_instance();
         $gallerypath = $storage->get_gallery_abspath($gallery_id);
     }
     if (!is_dir($gallerypath)) {
         nggGallery::show_error(sprintf(__("Directory <strong>%s</strong> doesn&#96;t exist!", 'nggallery'), esc_html($gallerypath)));
         return;
     }
     // read list of images
     $new_imageslist = nggAdmin::scandir($gallerypath);
     if (empty($new_imageslist)) {
         nggGallery::show_message(sprintf(__("Directory <strong>%s</strong> contains no pictures", 'nggallery'), esc_html($gallerypath)));
         return;
     }
     // take folder name as gallery name
     $galleryname = basename($galleryfolder);
     $galleryname = apply_filters('ngg_gallery_name', $galleryname);
     // check for existing gallery folder
     if (is_null($gallery_id)) {
         $gallery_id = $wpdb->get_var("SELECT gid FROM {$wpdb->nggallery} WHERE path = '{$galleryfolder}' ");
     }
     if (!$gallery_id) {
         // now add the gallery to the database
         $gallery_id = nggdb::add_gallery($galleryname, $galleryfolder, '', 0, 0, $user_ID);
         if (!$gallery_id) {
             nggGallery::show_error(__('Database error. Could not add gallery!', 'nggallery'));
             return;
         } else {
             do_action('ngg_created_new_gallery', $gallery_id);
         }
         $created_msg = sprintf(_n("Gallery <strong>%s</strong> successfully created!", 'Galleries <strong>%s</strong> successfully created!', 1, 'nggallery'), esc_html($galleryname));
     }
     // Look for existing image list
     $old_imageslist = $wpdb->get_col("SELECT filename FROM {$wpdb->nggpictures} WHERE galleryid = '{$gallery_id}' ");
     // if no images are there, create empty array
     if ($old_imageslist == NULL) {
         $old_imageslist = array();
     }
     // check difference
     $new_images = array_diff($new_imageslist, $old_imageslist);
     // all images must be valid files
     foreach ($new_images as $key => $picture) {
         // filter function to rename/change/modify image before
         $picture = apply_filters('ngg_pre_add_new_image', $picture, $gallery_id);
         $new_images[$key] = $picture;
         if (!@getimagesize($gallerypath . '/' . $picture)) {
             unset($new_images[$key]);
             @unlink($gallerypath . '/' . $picture);
         }
     }
     // add images to database
     $image_ids = nggAdmin::add_Images($gallery_id, $new_images);
     do_action('ngg_after_new_images_added', $gallery_id, $image_ids);
     //add the preview image if needed
     nggAdmin::set_gallery_preview($gallery_id);
     // now create thumbnails
     nggAdmin::do_ajax_operation('create_thumbnail', $image_ids, __('Create new thumbnails', 'nggallery'));
     //TODO:Message will not shown, because AJAX routine require more time, message should be passed to AJAX
     $message = $created_msg . sprintf(_n('%s picture successfully added', '%s pictures successfully added', count($image_ids), 'nggallery'), count($image_ids));
     $message .= ' [<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $gallery_id . '" >';
     $message .= __('Edit gallery', 'nggallery');
     $message .= '</a>]';
     nggGallery::show_message($message);
     return;
 }
Exemple #4
0
 function upload_images()
 {
     // upload of pictures
     global $wpdb;
     // WPMU action
     if (nggAdmin::check_quota()) {
         return;
     }
     // Images must be an array
     $imageslist = array();
     // get selected gallery
     $galleryID = (int) $_POST['galleryselect'];
     if ($galleryID == 0) {
         nggGallery::show_error(__('No gallery selected !', 'nggallery'));
         return;
     }
     // get the path to the gallery
     $gallerypath = $wpdb->get_var("SELECT path FROM {$wpdb->nggallery} WHERE gid = '{$galleryID}' ");
     if (!$gallerypath) {
         nggGallery::show_error(__('Failure in database, no gallery path set !', 'nggallery'));
         return;
     }
     // read list of images
     $dirlist = nggAdmin::scandir(WINABSPATH . $gallerypath);
     foreach ($_FILES as $key => $value) {
         // look only for uploded files
         if ($_FILES[$key]['error'] == 0) {
             $temp_file = $_FILES[$key]['tmp_name'];
             $filepart = pathinfo(strtolower($_FILES[$key]['name']));
             // required until PHP 5.2.0
             $filepart['filename'] = substr($filepart["basename"], 0, strlen($filepart["basename"]) - (strlen($filepart["extension"]) + 1));
             $filename = sanitize_title($filepart['filename']) . '.' . $filepart['extension'];
             // check for allowed extension
             $ext = array('jpeg', 'jpg', 'png', 'gif');
             if (!in_array($filepart['extension'], $ext)) {
                 nggGallery::show_error('<strong>' . $_FILES[$key]['name'] . ' </strong>' . __('is no valid image file!', 'nggallery'));
                 continue;
             }
             // check if this filename already exist in the folder
             $i = 0;
             while (in_array($filename, $dirlist)) {
                 $filename = sanitize_title($filepart['filename']) . '_' . $i++ . '.' . $filepart['extension'];
             }
             $dest_file = WINABSPATH . $gallerypath . '/' . $filename;
             //check for folder permission
             if (!is_writeable(WINABSPATH . $gallerypath)) {
                 $message = sprintf(__('Unable to write to directory %s. Is this directory writable by the server?', 'nggallery'), WINABSPATH . $gallerypath);
                 nggGallery::show_error($message);
                 return;
             }
             // save temp file to gallery
             if (!@move_uploaded_file($_FILES[$key]['tmp_name'], $dest_file)) {
                 nggGallery::show_error(__('Error, the file could not moved to : ', 'nggallery') . $dest_file);
                 nggAdmin::check_safemode(WINABSPATH . $gallerypath);
                 continue;
             }
             if (!nggAdmin::chmod($dest_file)) {
                 nggGallery::show_error(__('Error, the file permissions could not set', 'nggallery'));
                 continue;
             }
             // add to imagelist & dirlist
             $imageslist[] = $filename;
             $dirlist[] = $filename;
         }
     }
     if (count($imageslist) > 0) {
         // add images to database
         $image_ids = nggAdmin::add_Images($galleryID, $imageslist);
         //create thumbnails
         nggAdmin::do_ajax_operation('create_thumbnail', $image_ids, __('Create new thumbnails', 'nggallery'));
         //add the preview image if needed
         nggAdmin::set_gallery_preview($galleryID);
         nggGallery::show_message(count($image_ids) . __(' Image(s) successfully added', 'nggallery'));
     }
     return;
 }