/** * Check the Quota under WPMU. Only needed for this case * * @class nggWPMU * @return bool $result */ function check_quota() { if (get_site_option('upload_space_check_disabled')) { return false; } if (is_multisite() && nggWPMU::wpmu_enable_function('wpmuQuotaCheck')) { if ($error = upload_is_user_over_quota(false)) { nggGallery::show_error(__('Sorry, you have used your space allocation. Please delete some files to upload more files.', 'nggallery')); return true; } } return false; }
/** * Uploads base64 file to a gallery * @param int|stdClass|C_Gallery $gallery * @param $data base64-encoded string of data representing the image * @param type $filename specifies the name of the file * @return C_Image */ function upload_base64_image($gallery, $data, $filename = FALSE) { $settings = C_NextGen_Settings::get_instance(); $memory_limit = intval(ini_get('memory_limit')); if ($memory_limit < 256) { @ini_set('memory_limit', '256M'); } $retval = NULL; if ($gallery_id = $this->object->_get_gallery_id($gallery)) { // Ensure that there is capacity available require_once ABSPATH . 'wp-admin/includes/ms.php'; if (is_multisite() && nggWPMU::wpmu_enable_function('wpmuQuotaCheck')) { if (upload_is_user_over_quota(FALSE)) { throw new E_NoSpaceAvailableException(); } } // Get path information. The use of get_upload_abspath() might // not be the best for some drivers. For example, if using the // WordPress Media Library for uploading, then the wp_upload_bits() // function should perhaps be used $upload_dir = $this->object->get_upload_abspath($gallery); // Perhaps a filename was given instead of base64 data? if ($data[0] == '/' && @file_exists($data)) { if (!$filename) { $filename = basename($data); } $data = file_get_contents($data); } // Determine filenames $filename = $filename ? sanitize_title_with_dashes($filename) : uniqid('nextgen-gallery'); if (preg_match("/\\-(png|jpg|gif|jpeg)\$/i", $filename, $match)) { $filename = str_replace($match[0], '.' . $match[1], $filename); } $abs_filename = path_join($upload_dir, $filename); // Create the database record $factory = $this->object->get_registry()->get_utility('I_Component_Factory'); $retval = $image = $factory->create('image'); $image->alttext = sanitize_title_with_dashes(basename($filename, '.' . pathinfo($filename, PATHINFO_EXTENSION))); $image->galleryid = $this->object->_get_gallery_id($gallery); $image->filename = $filename; $image_key = $this->object->_image_mapper->get_primary_key_column(); // If we can't write to the directory, then there's no point in continuing if (!@file_exists($upload_dir)) { @wp_mkdir_p($upload_dir); } if (!is_writable($upload_dir)) { throw new E_InsufficientWriteAccessException(FALSE, $upload_dir, FALSE); } // Save the image if ($image_id = $this->object->_image_mapper->save($image)) { try { // Try writing the image if (!@file_exists($upload_dir)) { wp_mkdir_p($upload_dir); } $fp = fopen($abs_filename, 'w'); fwrite($fp, $data); fclose($fp); if ($settings->imgBackup) { $this->object->backup_image($image); } if ($settings->imgAutoResize) { $this->object->generate_image_clone($abs_filename, $abs_filename, $this->object->get_image_size_params($image_id, 'full')); } // Ensure that fullsize dimensions are added to metadata array $dimensions = getimagesize($abs_filename); $full_meta = array('width' => $dimensions[0], 'height' => $dimensions[1]); if (!isset($image->meta_data) or is_string($image->meta_data) && strlen($image->meta_data) == 0) { $image->meta_data = array(); } $image->meta_data = array_merge($image->meta_data, $full_meta); $image->meta_data['full'] = $full_meta; // Generate a thumbnail for the image $this->object->generate_thumbnail($image); // Set gallery preview image if missing $this->object->get_registry()->get_utility('I_Gallery_Mapper')->set_preview_image($gallery, $image_id, TRUE); // Notify other plugins that an image has been added do_action('ngg_added_new_image', $image); // delete dirsize after adding new images delete_transient('dirsize_cache'); // Seems redundant to above hook. Maintaining for legacy purposes do_action('ngg_after_new_images_added', $gallery_id, array($image->{$image_key})); } catch (Exception $ex) { throw new E_InsufficientWriteAccessException(FALSE, $abs_filename, FALSE, $ex); } } else { throw new E_InvalidEntityException(); } } else { throw new E_EntityNotFoundException(); } @ini_set('memory_limit', $memory_limit . 'M'); return $retval; }