Ejemplo n.º 1
0
 /**
  * Uploads the images temporary to the cache folder
  * If the user doesn't save his entry the cron job will delete
  * the images
  *
  * @param   array  $file  - the file array
  *
  * @return boolean
  */
 public function uploadTmp($file)
 {
     $appl = JFactory::getApplication();
     // Total length of post back data in bytes.
     $contentLength = (int) $_SERVER['CONTENT_LENGTH'];
     $mediaHelper = new CompojoomHelperMedia();
     // Maximum allowed size of post back data in MB.
     $postMaxSize = $mediaHelper->toBytes(ini_get('post_max_size'));
     // Maximum allowed size of script execution in MB.
     $memoryLimit = $mediaHelper->toBytes(ini_get('memory_limit'));
     // Check for the total size of post back data.
     if ($postMaxSize > 0 && $contentLength > $postMaxSize || $memoryLimit != -1 && $contentLength > $memoryLimit) {
         $appl->enqueueMessage(JText::_('LIB_COMPOJOOM_ERROR_WARNUPLOADTOOLARGE'));
         return false;
     }
     // Do we have a file?
     if (isset($file['name'])) {
         JLoader::import('joomla.filesystem.file');
         $user = JFactory::getUser();
         $canUpload = $user->authorise('core.multimedia.create', $this->component);
         $params = JComponentHelper::getParams($this->component);
         $sizes = (array) $params->get('thumbs');
         // Some cameras just add whitespace, let's change this
         $file['name'] = str_replace(' ', '_', $file['name']);
         // Some users are uploading files with umlauts, change them to normal characters, otherwise we get an error on upload
         $file['name'] = preg_replace("/&([a-z])[a-z]+;/i", "\$1", htmlentities($file['name']));
         // The user doesn't seem to have upload privilegies
         if (!$canUpload) {
             $appl->enqueueMessage(JText::_('LIB_COMPOJOOM_YOU_DONT_HAVE_UPLOAD_PRIVILEGES'));
             return false;
         }
         // Check if we pass all other checks
         if (!$mediaHelper->canUpload($file, $this->component)) {
             return false;
         }
         // Get a (very!) randomised name
         $serverkey = JFactory::getConfig()->get('secret', '');
         $sig = microtime() . $serverkey;
         if (function_exists('sha256')) {
             $mangledname = sha256($sig);
         } elseif (function_exists('sha1')) {
             $mangledname = sha1($sig);
         } else {
             $mangledname = md5($sig);
         }
         $mangledname .= '_' . $file['name'];
         // ...and its full path
         $filepath = JPath::clean($this->getFilePath() . $mangledname);
         // If we have a name clash, abort the upload
         if (JFile::exists($filepath)) {
             $appl->enqueueMessage(JText::_('LIB_COMPOJOOM_ATTACHMENTS_ERR_NAMECLASH'));
             return false;
         }
         // Do the upload
         if (!JFile::upload($file['tmp_name'], $filepath)) {
             $appl->enqueueMessage(JText::_('LIB_COMPOJOOM_ATTACHMENTS_ERR_CANTJFILEUPLOAD'));
             return false;
         }
         // Get the MIME type
         if (function_exists('mime_content_type')) {
             $mime = mime_content_type($filepath);
         } elseif (function_exists('finfo_open')) {
             $finfo = finfo_open(FILEINFO_MIME_TYPE);
             $mime = finfo_file($finfo, $filepath);
         } else {
             $mime = 'application/octet-stream';
         }
         // Create a temporary thumb file
         $image = new CompojoomImage($filepath);
         $thumbs = $image->createThumbs($sizes['small']);
         $imageData = base64_encode(file_get_contents($thumbs[0]->getPath()));
         // Now remove the thumb
         JFile::delete($thumbs[0]->getPath());
         // Format the image SRC:  data:{mime};base64,{data};
         $src = 'data: ' . $mime . ';base64,' . $imageData;
         // Return the file info
         $fileData = array('name' => $mangledname, 'title' => JFile::stripExt($file['name']), 'thumbnailUrl' => $src, 'size' => $file['size'], 'type' => $file['type'], 'deleteType' => 'delete', 'url' => '', 'deleteUrl' => $this->deleteUrl . '&file=' . $mangledname);
         return $fileData;
     } else {
         $appl->enqueueMessage(JText::_('LIB_COMPOJOOM_ATTACHMENTS_ERR_NOFILE'));
         return false;
     }
 }
Ejemplo n.º 2
0
<script type="text/javascript">
	document.getElementById("file-upload-fake").addEventListener("click", function () {
		document.getElementById("file-upload-real").click();  // trigger the click of actual file upload button
	});

	jQuery(document).ready(function () {
		var $ = jQuery;

		// Initialize the jQuery File Upload widget:
		$('#fileupload').fileupload({
			// Uncomment the following to send cross-domain cookies:
			//xhrFields: {withCredentials: true},
			formData: {},
			autoUpload: true,
			maxFileSize: <?php 
echo $mediaHelper->toBytes($displayData['maxSize'] . 'M');
?>
,
			maxNumberOfFiles: <?php 
echo $displayData['maxNumberOfFiles'];
?>
,
			url: '<?php 
echo $displayData['url'] . '&' . JSession::getFormToken();
?>
=1',
			disableImageResize: false,
			imageMaxWidth: <?php 
echo $imageSize['x'];
?>
,