function hj_framework_handle_multifile_upload($user_guid) { if (!empty($_FILES)) { $access = elgg_get_ignore_access(); elgg_set_ignore_access(true); $file = $_FILES['Filedata']; $filehandler = new hjFile(); $filehandler->owner_guid = (int) $user_guid; $filehandler->container_guid = (int) $user_guid; $filehandler->access_id = ACCESS_DEFAULT; $filehandler->data_pattern = hj_framework_get_data_pattern('object', 'hjfile'); $filehandler->title = $file['name']; $filehandler->description = ''; $prefix = "hjfile/"; $filestorename = elgg_strtolower($file['name']); $mime = hj_framework_get_mime_type($file['name']); $filehandler->setFilename($prefix . $filestorename); $filehandler->setMimeType($mime); $filehandler->originalfilename = $file['name']; $filehandler->simpletype = hj_framework_get_simple_type($mime); $filehandler->filesize = round($file['size'] / (1024 * 1024), 2) . "Mb"; $filehandler->open("write"); $filehandler->close(); move_uploaded_file($file['tmp_name'], $filehandler->getFilenameOnFilestore()); $file_guid = $filehandler->save(); hj_framework_set_entity_priority($filehandler); elgg_trigger_plugin_hook('hj:framework:file:process', 'object', array('entity' => $filehandler)); if ($file_guid) { $meta_value = $filehandler->getGUID(); } else { $meta_value = $filehandler->getFilenameOnFilestore(); } if ($file_guid && $filehandler->simpletype == "image") { $thumb_sizes = hj_framework_get_thumb_sizes(); foreach ($thumb_sizes as $thumb_type => $thumb_size) { $thumbnail = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(), $thumb_size['w'], $thumb_size['h'], $thumb_size['square'], 0, 0, 0, 0, true); if ($thumbnail) { $thumb = new ElggFile(); $thumb->setMimeType($file['type']); $thumb->owner_guid = $user_guid; $thumb->setFilename("{$prefix}{$filehandler->getGUID()}{$thumb_type}.jpg"); $thumb->open("write"); $thumb->write($thumbnail); $thumb->close(); $thumb_meta = "{$thumb_type}thumb"; $filehandler->{$thumb_meta} = $thumb->getFilename(); unset($thumbnail); } } } $response = array('status' => 'OK', 'value' => $meta_value); } else { $response = array('status' => 'FAIL'); } echo json_encode($response); elgg_set_ignore_access($access); return; }
function hj_framework_process_entity_icon_input($hook, $type, $return, $params) { $entity = elgg_extract('entity', $params); $name = elgg_extract('name', $params); global $_FILES; if (isset($_FILES[$name]) && substr_count($_FILES[$name]['type'], 'image/') && !$_FILES[$name]['error']) { $file = new hjFile(); $file->owner_guid = $entity->guid; $file->setFilename('hjfile/' . time() . $_FILES[$name]['name']); $file->open("write"); $file->close(); move_uploaded_file($_FILES[$name]['tmp_name'], $file->getFilenameOnFilestore()); hj_framework_generate_entity_icons($entity, $file); $file->delete(); } return true; }
/** * Generate icons for an entity * * @param ElggEntity $entity * @param ElggFile $filehandler Valid $filehandler on Elgg filestore to grab the file from | can be null if $entity is instance of ElggFile * @param array $coords Coordinates for cropping * @return boolean */ function hj_framework_generate_entity_icons($entity, $filehandler = null, $coords = array()) { $icon_sizes = hj_framework_get_thumb_sizes($entity->getSubtype()); if (!$filehandler && $entity instanceof hjFile) { $filehandler = $entity; } if (!$filehandler) { return false; } $prefix = "icons/" . $entity->getGUID(); foreach ($icon_sizes as $size => $values) { if (!empty($coords) && in_array($size, array('topbar', 'tiny', 'small', 'medium', 'large'))) { $thumb_resized = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(), $values['w'], $values['h'], $values['square'], $coords['x1'], $coords['y1'], $coords['x2'], $coords['y2'], $values['upscale']); } else { if (empty($coords)) { $thumb_resized = get_resized_image_from_existing_file($filehandler->getFilenameOnFilestore(), $values['w'], $values['h'], $values['square'], 0, 0, 0, 0, $values['upscale']); } } if ($thumb_resized) { $thumb = new hjFile(); $thumb->owner_guid = $entity->owner_guid; $thumb->setMimeType('image/jpeg'); $thumb->setFilename($prefix . "{$size}.jpg"); $thumb->open("write"); $thumb->write($thumb_resized); $thumb->close(); $icontime = true; } } if ($icontime) { $entity->icontime = time(); return true; } return false; }