/** * __construct * * @param FCMS_Error $fcmsError * @param Database $fcmsDatabase * @param User $fcmsUser * @param Destination $destination * @param UploadPhoto $uploadPhoto * * @return void */ public function __construct(FCMS_Error $fcmsError, Database $fcmsDatabase, User $fcmsUser, Destination $destination, UploadPhoto $uploadPhoto = null) { $this->fcmsError = $fcmsError; $this->fcmsDatabase = $fcmsDatabase; $this->fcmsUser = $fcmsUser; $this->destination = $destination; $this->uploadPhoto = $uploadPhoto; $this->usingFullSizePhotos = usingFullSizePhotos(); }
/** * getPhotoPaths * * @param string $fileName * @param string $uid * * @return array */ public function getPhotoPaths($fileName, $uid) { $fileName = basename($fileName); $uid = (int) $uid; $photoPath[0] = $this->absolutePath . "member{$uid}/{$fileName}"; $photoPath[1] = $this->absolutePath . "member{$uid}/{$fileName}"; if (usingFullSizePhotos()) { $photoPath[1] = $this->absolutePath . "member{$uid}/full_{$fileName}"; } return $photoPath; }
/** * display * * @return boolean */ public function display() { $_SESSION['fcms_uploader_type'] = 'java'; // Setup some applet params $scaledInstanceNames = '<param name="uc_scaledInstanceNames" value="thumb,main"/>'; $scaledInstanceDimensions = '<param name="uc_scaledInstanceDimensions" value="150x150xcrop,600x600xfit"/>'; $fullSizedPhotos = ''; if (usingFullSizePhotos()) { $scaledInstanceNames = '<param name="uc_scaledInstanceNames" value="thumb,main,full"/>'; $scaledInstanceDimensions = '<param name="uc_scaledInstanceDimensions" value="150x150xcrop,600x600xfit,1400x1400xfit"/>'; $fullSizedPhotos = ' function sendFullSizedPhotos() { var uploader = document.jumpLoaderApplet.getUploader(); var attrSet = uploader.getAttributeSet(); var attr = attrSet.createStringAttribute("full-sized-photos", "1"); attr.setSendToServer(true); } sendFullSizedPhotos();'; } echo ' <noscript> <style type="text/css"> applet, .photo-uploader {display: none;} #noscript {padding:1em;} #noscript p {background-color:#ff9; padding:3em; font-size:130%; line-height:200%;} #noscript p span {font-size:60%;} </style> <div id="noscript"> <p> ' . T_('JavaScript must be enabled in order for you to use the Advanced Uploader. However, it seems JavaScript is either disabled or not supported by your browser.') . '<br/> <span> ' . T_('Either enable JavaScript by changing your browser options.') . '<br/> ' . T_('or') . '<br/> ' . T_('Enable the Basic Upload option by changing Your Settings.') . ' </span> </p> </div> </noscript> <div id="loading">' . T_('Loading Advanced Uploader...') . '</div> <form method="post" id="uploadForm" name="uploadForm" class="photo-uploader" style="visibility:hidden"> <div class="header"> <label>' . T_('Category') . '</label> ' . $this->getCategoryInputs() . ' </div> <ul class="upload-types"> ' . $this->getUploadTypesNavigation('upload') . ' </ul> <div class="upload-area"> <applet id="jumpLoaderApplet" name="jumpLoaderApplet" code="jmaster.jumploader.app.JumpLoaderApplet.class" archive="../inc/thirdparty/jumploader_z.jar" width="758" height="300" mayscript> <param name="uc_sendImageMetadata" value="true"/> <param name="uc_uploadUrl" value="index.php"/> <param name="vc_useThumbs" value="true"/> <param name="uc_uploadScaledImagesNoZip" value="true"/> <param name="uc_uploadScaledImages" value="true"/> ' . $scaledInstanceNames . ' ' . $scaledInstanceDimensions . ' <param name="uc_scaledInstanceQualityFactors" value="900"/> <param name="uc_uploadFormName" value="uploadForm"/> <param name="vc_lookAndFeel" value="system"/> <param name="vc_uploadViewStartActionVisible" value="false"/> <param name="vc_uploadViewStopActionVisible" value="false"/> <param name="vc_uploadViewPasteActionVisible" value="false"/> <param name="vc_uploadViewRetryActionVisible" value="false"/> <param name="vc_uploadViewFilesSummaryBarVisible" value="false"/> <param name="vc_uiDefaults" value="Panel.background=#eff0f4; List.background=#eff0f4;"/> <param name="ac_fireAppletInitialized" value="true"/> <param name="ac_fireUploaderStatusChanged" value="true"/> <param name="ac_fireUploaderFileStatusChanged" value="true"/> </applet> </div> <div class="footer"> <input class="sub1" type="button" value="' . T_('Upload') . '" id="start-upload" name="start-upload"/> </div> </form> <script type="text/javascript"> document.onkeydown = keyHandler; function keyHandler(e) { if (!e) { e = window.event; } if (e.keyCode == 27) { $("#uploadForm").css("visibility", "visible"); $("#loading").hide(); } } $("#start-upload").click(function(e) { ' . $this->getJsUploadValidation() . ' var uploader = document.jumpLoaderApplet.getUploader(); var attrSet = uploader.getAttributeSet(); var newValue = $("#new-category").val(); var newAttr = attrSet.createStringAttribute("new-category", newValue); newAttr.setSendToServer(true); var attribute = attrSet.createStringAttribute("javaUpload", 1); attribute.setSendToServer(true); if ($("#existing-categories")) { var value = $("#existing-categories").val(); var attr = attrSet.createStringAttribute("category", value); attr.setSendToServer(true); } uploader.startUpload(); });' . $fullSizedPhotos . ' function uploaderStatusChanged(uploader) { if (uploader.getStatus() == 0) { window.location.href = "index.php?action=advanced"; } } function appletInitialized(applet) { $("#uploadForm").css("visibility", "visible"); $("#loading").hide(); } </script>'; }
/** * getPhotoPaths * * @param string $fileName * @param string $uid * * @return array */ public function getPhotoPaths($fileName, $uid) { $fileName = basename($fileName); $mediumPath = $this->s3->getAuthenticatedURL($this->bucketName, $fileName, 3600); $photoPaths = array($mediumPath, $mediumPath); if (usingFullSizePhotos()) { $photoPaths[1] = $this->s3->getAuthenticatedURL($this->bucketName, 'full_' . $fileName, 3600); } return $photoPaths; }
/** * display * * @return void */ public function display() { $_SESSION['fcms_uploader_type'] = 'plupload'; if (isset($_SESSION['photos'])) { unset($_SESSION['photos']); } $fullFileUploaded = ''; $filesPerPhotoCount = 2; if (usingFullSizePhotos()) { $filesPerPhotoCount = 3; $fullFileUploaded = 'else if (!("full" in file)) { file.full = true; file.thumb = false; file.loaded = 0; file.percent = 0; file.status = plupload.QUEUED; up.trigger("QueuedChanged"); up.refresh(); }'; } // Display the form echo ' <link rel="stylesheet" href="../ui/js/jqueryui/jquery-ui.min.css"> <link rel="stylesheet" href="../ui/js/jqueryui/jquery-ui.theme.min.css"> <link rel="stylesheet" href="../inc/thirdparty/plupload/js/jquery.ui.plupload/css/jquery.ui.plupload.css"> <script type="text/javascript" src="../ui/js/jqueryui/jquery-ui.min.js"></script> <script type="text/javascript" src="../inc/thirdparty/plupload/js/plupload.full.min.js"></script> <script type="text/javascript" src="../inc/thirdparty/plupload/js/jquery.ui.plupload/jquery.ui.plupload.min.js"></script> <script> var filesPerPhotoCount = ' . $filesPerPhotoCount . '; $(document).ready(function() { $("#uploader").plupload({ runtimes : "html5,flash,silverlight,html4", url : "index.php", max_file_size : "100mb", buttons: { "start" : false, }, multipart_params: { "plupload" : "1", }, filters : [ {title : "Image files", extensions : "jpg,jpeg,gif,png"} ], // Sort files sortable: true, // Views to activate views: { list : false, thumbs : true, active : "thumbs" }, // Flash settings flash_swf_url : "../inc/thirdparty/plupload/js/Moxie.swf", // Silverlight settings silverlight_xap_url : "../inc/thirdparty/plupload/js/Moxie.xap", preinit : { Init: function(up, info) { up.real_total_files = 0; up.real_files_uploaded = 0; }, }, init : { FilesAdded: function(up, files) { var total = files.length; var i = 1; plupload.each(files, function(file) { i++; up.real_total_files += filesPerPhotoCount; }); up.refresh(); // Reposition Flash/Silverlight }, BeforeUpload: function(up, file) { if ("thumb" in file) { up.settings.resize = { width: 150, height: 150, quality: 80, crop: true }; up.settings.resize.enabled = true; up.settings.resize.width = 150; up.settings.resize.height = 150; up.settings.resize.quality = 90; up.settings.resize.crop = true; up.settings.file_data_name = "thumb"; if ("full" in file) { up.settings.resize.enabled = false; up.settings.file_data_name = "full"; } } else { up.settings.resize.enabled = true; up.settings.resize.width = 600; up.settings.resize.height = 600; up.settings.resize.crop = true; up.settings.file_data_name = "main"; } }, Error: function(up, err) { $("#autocomplete_form").before( "<div class=\\"error-alert\\">" + err.message + "</div>" ); up.refresh(); // Reposition Flash/Silverlight }, FileUploaded: function(up, file, info) { var response = JSON.parse(info.response); if (response !== null && response.error) { file.status = plupload.FAILED; $("#uploader").plupload("notify", "error", response.error.message); } if (!("thumb" in file)) { file.thumb = true; file.loaded = 0; file.percent = 0; file.status = plupload.QUEUED; up.trigger("QueuedChanged"); up.refresh(); } ' . $fullFileUploaded . ' up.real_files_uploaded++; if (up.real_total_files == up.real_files_uploaded) { window.location.href = "index.php?action=advanced"; } } } }); }); </script> <form id="autocomplete_form" enctype="multipart/form-data" action="?action=upload" method="post" class="photo-uploader"> <div class="header"> <label>' . T_('Category') . '</label> ' . $this->getCategoryInputs() . ' </div> <ul class="upload-types"> ' . $this->getUploadTypesNavigation('upload') . ' </ul> <div class="upload-area"> <div class="plupload"> <p style="float:right"> <a class="help" href="../help.php?topic=photo#gallery-howworks">' . T_('Help') . '</a> </p> <div id="uploader"> </div> </div><!--/plupload--> </div> <div class="footer"> <input class="sub1" type="submit" id="submit-photos" name="addphoto" value="' . T_('Submit') . '"/> </div> </form> <script type="text/javascript"> $("#submit-photos").click(function(e) { ' . $this->getJsUploadValidation() . ' e.preventDefault(); var newCategory = $("#new-category").val(); var category = ""; if ($("#existing-categories")) { category = $("#existing-categories").val(); } var uploader = $("#uploader").plupload("getUploader"); uploader.settings.multipart_params = { "plupload" : "1", "new-category" : newCategory, "category" : category, }; $("#uploader").plupload("start"); }); </script>'; }