function get_image_sizes($ref, $internal = false, $extension = "jpg", $onlyifexists = true) { # Returns a table of available image sizes for resource $ref. The standard image sizes are translated using $lang. Custom image sizes are i18n translated. # The original image file assumes the name of the 'nearest size (up)' in the table global $imagemagick_calculate_sizes; # Work out resource type $resource_type = sql_value("select resource_type value from resource where ref='{$ref}'", ""); # add the original image $return = array(); $lastname = sql_value("select name value from preview_size where width=(select max(width) from preview_size)", ""); # Start with the highest resolution. $lastpreview = 0; $lastrestricted = 0; $path2 = get_resource_path($ref, true, '', false, $extension); if (file_exists($path2) && !checkperm("T" . $resource_type . "_")) { $returnline = array(); $returnline["name"] = lang_or_i18n_get_translated($lastname, "imagesize-"); $returnline["allow_preview"] = $lastpreview; $returnline["allow_restricted"] = $lastrestricted; $returnline["path"] = $path2; $returnline["id"] = ""; $dimensions = sql_query("select width,height,file_size,resolution,unit from resource_dimensions where resource=" . $ref); if (count($dimensions)) { $sw = $dimensions[0]['width']; if ($sw == 0) { $sw = "?"; } $sh = $dimensions[0]['height']; if ($sh == 0) { $sh = "?"; } $filesize = $dimensions[0]['file_size']; # resolution and unit are not necessarily available, set to empty string if so. $resolution = $dimensions[0]['resolution'] ? $dimensions[0]['resolution'] : ""; $unit = $dimensions[0]['unit'] ? $dimensions[0]['unit'] : ""; } else { $fileinfo = get_original_imagesize($ref, $path2, $extension); $filesize = $fileinfo[0]; $sw = $fileinfo[1]; $sh = $fileinfo[2]; } if (!is_numeric($filesize)) { $returnline["filesize"] = "?"; $returnline["filedown"] = "?"; } else { $returnline["filedown"] = ceil($filesize / 50000) . " seconds @ broadband"; $returnline["filesize"] = formatfilesize($filesize); } $returnline["width"] = $sw; $returnline["height"] = $sh; $returnline["extension"] = $extension; isset($resolution) ? $returnline["resolution"] = $resolution : ($returnline["resolution"] = ""); isset($unit) ? $returnline["unit"] = $unit : ($returnline["unit"] = ""); $return[] = $returnline; } # loop through all image sizes $sizes = sql_query("select * from preview_size order by width desc"); for ($n = 0; $n < count($sizes); $n++) { $path = get_resource_path($ref, true, $sizes[$n]["id"], false, "jpg"); $file_exists = file_exists($path); if (($file_exists || !$onlyifexists) && !checkperm("T" . $resource_type . "_" . $sizes[$n]["id"])) { if ($sizes[$n]["internal"] == 0 || $internal) { $returnline = array(); $returnline["name"] = lang_or_i18n_get_translated($sizes[$n]["name"], "imagesize-"); $returnline["allow_preview"] = $sizes[$n]["allow_preview"]; # The ability to restrict download size by user group and resource type. if (checkperm("X" . $resource_type . "_" . $sizes[$n]["id"])) { # Permission set. Always restrict this download if this resource is restricted. $returnline["allow_restricted"] = false; } else { # Take the restriction from the settings for this download size. $returnline["allow_restricted"] = $sizes[$n]["allow_restricted"]; } $returnline["path"] = $path; $returnline["id"] = $sizes[$n]["id"]; if ((list($sw, $sh) = @getimagesize($path)) === false) { $sw = 0; $sh = 0; } if ($file_exists) { $filesize = @filesize_unlimited($path); } else { $filesize = 0; } if ($filesize === false) { $returnline["filesize"] = "?"; $returnline["filedown"] = "?"; } else { $returnline["filedown"] = ceil($filesize / 50000) . " seconds @ broadband"; $filesize = formatfilesize($filesize); } $returnline["filesize"] = $filesize; $returnline["width"] = $sw; $returnline["height"] = $sh; $returnline["extension"] = 'jpg'; $return[] = $returnline; } } $lastname = lang_or_i18n_get_translated($sizes[$n]["name"], "imagesize-"); $lastpreview = $sizes[$n]["allow_preview"]; $lastrestricted = $sizes[$n]["allow_restricted"]; } return $return; }
$results[$n]['preview'] = $file; } } } if ($original) { for ($i = 0; $i < count($results); $i++) { $access = get_resource_access($results[$i]); $filepath = get_resource_path($results[$i]['ref'], TRUE, '', FALSE, $results[$i]['file_extension'], -1, 1, FALSE, '', -1); $original_link = get_resource_path($results[$i]['ref'], FALSE, '', FALSE, $results[$i]['file_extension'], -1, 1, FALSE, '', -1); if (file_exists($filepath)) { $results[$i]['original_link'] = $original_link; } else { $results[$i]['original_link'] = 'No original link available.'; } // Get the size of the original file: $original_size = get_original_imagesize($results[$i]['ref'], $filepath, $results[$i]['file_extension']); $original_size = formatfilesize($original_size[0]); $original_size = str_replace(' ', ' ', $original_size); $results[$i]['original_size'] = $original_size; } } // flv file and thumb if available if (getval("flvfile", "") != "") { for ($n = 0; $n < count($results); $n++) { // flv previews $flvfile = get_resource_path($results[$n]['ref'], true, "pre", false, $ffmpeg_preview_extension); if (!file_exists($flvfile)) { $flvfile = get_resource_path($results[$n]['ref'], true, "", false, $ffmpeg_preview_extension); } if (!(isset($results[$n]['is_transcoding']) && $results[$n]['is_transcoding'] == 1) && file_exists($flvfile) && strpos(strtolower($flvfile), "." . $ffmpeg_preview_extension) !== false) { if (file_exists(get_resource_path($results[$n]['ref'], true, "pre", false, $ffmpeg_preview_extension))) {
//if the file move was successfull if(copy($tempdir.$filename, $rs_path)){ //remove tmp file unlink($tempdir.$filename); set_time_limit(600); // if contact name fields are detected in $_POST if(array_key_exists("field_80",$_POST)){$creator = $_POST['field_80'];contacts($creator,$_POST,80);}; if(array_key_exists("field_184",$_POST)){$creator = $_POST['field_184'];contacts($creator,$_POST, 184);}; if(array_key_exists("field_171",$_POST)){$creator = $_POST['field_171'];contacts($creator, $_POST, 171);}; if(array_key_exists("field_125",$_POST)){$creator = $_POST['field_125'];contacts($creator, $_POST, 125);}; if(array_key_exists("field_177",$_POST)){$creator = $_POST['field_177'];contacts($creator, $_POST, 177);}; if(array_key_exists("field_178",$_POST)){$creator = $_POST['field_178'];contacts($creator, $_POST, 178);}; if(array_key_exists("field_180",$_POST)){$creator = $_POST['field_180'];contacts($creator, $_POST, 180);}; //Update image sizes in database get_original_imagesize($ref,$rs_path,$file_extension); // Update disk usage update_disk_usage($ref); //Bug Fix for Videos not storing width and height values in the resource_dimensions table if($resource_type==3){ $exiftool_fullpath = get_utility_path("exiftool"); $command = $exiftool_fullpath . " -j -sourceImageWidth -sourceImageHeight ".escapeshellarg($rs_path)." 2>&1"; $dimensions = run_command($command); $result=json_decode($dimensions); //if extraction was success if(isset($result[0]->SourceImageWidth) && isset($result[0]->SourceImageHeight)){ $width = $result[0]->SourceImageWidth; $height = $result[0]->SourceImageHeight; $resolution = $width*$height;
function upload_file($ref, $no_exif = false, $revert = false, $autorotate = false) { hook("beforeuploadfile", "", array($ref)); hook("clearaltfiles", "", array($ref)); // optional: clear alternative files before uploading new resource # revert is mainly for metadata reversion, removing all metadata and simulating a reupload of the file from scratch. hook("removeannotations", "", array($ref)); $exiftool_fullpath = get_utility_path("exiftool"); # Process file upload for resource $ref if ($revert == true) { global $filename_field; $original_filename = get_data_by_field($ref, $filename_field); # Field 8 is used in a special way for staticsync, don't overwrite. $test_for_staticsync = get_resource_data($ref); if ($test_for_staticsync['file_path'] != "") { $staticsync_mod = " and resource_type_field != 8"; } else { $staticsync_mod = ""; } sql_query("delete from resource_data where resource={$ref} {$staticsync_mod}"); sql_query("delete from resource_keyword where resource={$ref} {$staticsync_mod}"); #clear 'joined' display fields which are based on metadata that is being deleted in a revert (original filename is reinserted later) $display_fields = get_resource_table_joins(); if ($staticsync_mod != "") { $display_fields_new = array(); for ($n = 0; $n < count($display_fields); $n++) { if ($display_fields[$n] != 8) { $display_fields_new[] = $display_fields[$n]; } } $display_fields = $display_fields_new; } $clear_fields = ""; for ($x = 0; $x < count($display_fields); $x++) { $clear_fields .= "field" . $display_fields[$x] . "=''"; if ($x < count($display_fields) - 1) { $clear_fields .= ","; } } sql_query("update resource set " . $clear_fields . " where ref={$ref}"); #also add the ref back into keywords: add_keyword_mappings($ref, $ref, -1); $extension = sql_value("select file_extension value from resource where ref={$ref}", ""); $filename = get_resource_path($ref, true, "", false, $extension); $processfile['tmp_name'] = $filename; } else { # Work out which file has been posted if (isset($_FILES['userfile'])) { $processfile = $_FILES['userfile']; } elseif (isset($_FILES['Filedata'])) { $processfile = $_FILES['Filedata']; } # Java upload (at least) needs this # Plupload needs this if (isset($_REQUEST['name'])) { $filename = $_REQUEST['name']; } else { $filename = $processfile['name']; } global $filename_field; if ($no_exif && isset($filename_field)) { $user_set_filename = get_data_by_field($ref, $filename_field); if (trim($user_set_filename) != '') { // Get extension of file just in case the user didn't provide one $path_parts = pathinfo($filename); $original_extension = $path_parts['extension']; $filename = $user_set_filename; // If the user filename doesn't have an extension add the original one $path_parts = pathinfo($filename); if (!isset($path_parts['extension'])) { $filename .= '.' . $original_extension; } } } } # Work out extension if (!isset($extension)) { # first try to get it from the filename $extension = explode(".", $filename); if (count($extension) > 1) { $extension = escape_check(trim(strtolower($extension[count($extension) - 1]))); } else { if ($exiftool_fullpath != false) { $file_type_by_exiftool = run_command($exiftool_fullpath . " -filetype -s -s -s " . escapeshellarg($processfile['tmp_name'])); if (strlen($file_type_by_exiftool) > 0) { $extension = str_replace(" ", "_", trim(strtolower($file_type_by_exiftool))); $filename = $filename; } else { return false; } } else { return false; } } } # Banned extension? global $banned_extensions; if (in_array($extension, $banned_extensions)) { return false; } $status = "Please provide a file name."; $filepath = get_resource_path($ref, true, "", true, $extension); if (!$revert) { # Remove existing file, if present hook("beforeremoveexistingfile", "", array("resourceId" => $ref)); $old_extension = sql_value("select file_extension value from resource where ref='{$ref}'", ""); if ($old_extension != "") { $old_path = get_resource_path($ref, true, "", true, $old_extension); if (file_exists($old_path)) { unlink($old_path); } } // also remove any existing extracted icc profiles $icc_path = get_resource_path($ref, true, "", true, $extension . '.icc'); if (file_exists($icc_path)) { unlink($icc_path); } global $pdf_pages; $iccx = 0; // if there is a -0.icc page, run through and delete as many as necessary. $finished = false; $badicc_path = str_replace(".icc", "-{$iccx}.icc", $icc_path); while (!$finished) { if (file_exists($badicc_path)) { unlink($badicc_path); $iccx++; $badicc_path = str_replace(".icc", "-{$iccx}.icc", $icc_path); } else { $finished = true; } } $iccx = 0; } if (!$revert) { if ($filename != "") { global $jupload_alternative_upload_location, $plupload_upload_location; if (isset($plupload_upload_location)) { # PLUpload - file was sent chunked and reassembled - use the reassembled file location $result = rename($plupload_upload_location, $filepath); } elseif (isset($jupload_alternative_upload_location)) { # JUpload - file was sent chunked and reassembled - use the reassembled file location $result = rename($jupload_alternative_upload_location, $filepath); } else { # Standard upload. if (!$revert) { $result = move_uploaded_file($processfile['tmp_name'], $filepath); } else { $result = true; } } if ($result == false) { $status = "File upload error. Please check the size of the file you are trying to upload."; return false; } else { global $camera_autorotation; global $ffmpeg_audio_extensions; if ($camera_autorotation) { if ($autorotate && !in_array($extension, $ffmpeg_audio_extensions)) { AutoRotateImage($filepath); } } chmod($filepath, 0777); global $icc_extraction; global $ffmpeg_supported_extensions; if ($icc_extraction && $extension != "pdf" && !in_array($extension, $ffmpeg_supported_extensions)) { extract_icc_profile($ref, $extension); } $status = "Your file has been uploaded."; } } } # Store extension in the database and update file modified time. if ($revert) { $has_image = ""; } else { $has_image = ",has_image=0"; } sql_query("update resource set file_extension='{$extension}',preview_extension='jpg',file_modified=now() {$has_image} where ref='{$ref}'"); # delete existing resource_dimensions sql_query("delete from resource_dimensions where resource='{$ref}'"); # get file metadata if (!$no_exif) { extract_exif_comment($ref, $extension); } else { global $merge_filename_with_title, $lang; if ($merge_filename_with_title) { $merge_filename_with_title_option = urlencode(getval('merge_filename_with_title_option', '')); $merge_filename_with_title_include_extensions = urlencode(getval('merge_filename_with_title_include_extensions', '')); $merge_filename_with_title_spacer = urlencode(getval('merge_filename_with_title_spacer', '')); $original_filename = ''; if (isset($_REQUEST['name'])) { $original_filename = $_REQUEST['name']; } else { $original_filename = $processfile['name']; } if ($merge_filename_with_title_include_extensions == 'yes') { $merged_filename = $original_filename; } else { $merged_filename = strip_extension($original_filename); } // Get title field: $resource = get_resource_data($ref); $read_from = get_exiftool_fields($resource['resource_type']); for ($i = 0; $i < count($read_from); $i++) { if ($read_from[$i]['name'] == 'title') { $oldval = get_data_by_field($ref, $read_from[$i]['ref']); if (strpos($oldval, $merged_filename) !== FALSE) { continue; } switch ($merge_filename_with_title_option) { case $lang['merge_filename_title_do_not_use']: // Do nothing since the user doesn't want to use this feature break; case $lang['merge_filename_title_replace']: $newval = $merged_filename; break; case $lang['merge_filename_title_prefix']: $newval = $merged_filename . $merge_filename_with_title_spacer . $oldval; if ($oldval == '') { $newval = $merged_filename; } break; case $lang['merge_filename_title_suffix']: $newval = $oldval . $merge_filename_with_title_spacer . $merged_filename; if ($oldval == '') { $newval = $merged_filename; } break; default: // Do nothing break; } update_field($ref, $read_from[$i]['ref'], $newval); } } } } # extract text from documents (e.g. PDF, DOC). global $extracted_text_field; if (isset($extracted_text_field) && !$no_exif) { if (isset($unoconv_path) && in_array($extension, $unoconv_extensions)) { // omit, since the unoconv process will do it during preview creation below } else { extract_text($ref, $extension); } } # Store original filename in field, if set global $filename_field, $amended_filename; if (isset($filename_field)) { if (isset($amended_filename)) { $filename = $amended_filename; } } if (!$revert) { update_field($ref, $filename_field, $filename); } else { update_field($ref, $filename_field, $original_filename); } if (!$revert) { # Clear any existing FLV file or multi-page previews. global $pdf_pages; for ($n = 2; $n <= $pdf_pages; $n++) { # Remove preview page. $path = get_resource_path($ref, true, "scr", false, "jpg", -1, $n, false); if (file_exists($path)) { unlink($path); } # Also try the watermarked version. $path = get_resource_path($ref, true, "scr", false, "jpg", -1, $n, true); if (file_exists($path)) { unlink($path); } } # Remove any FLV video preview (except if the actual resource is an FLV file). global $ffmpeg_preview_extension; if ($extension != $ffmpeg_preview_extension) { $path = get_resource_path($ref, true, "", false, $ffmpeg_preview_extension); if (file_exists($path)) { unlink($path); } } # Remove any FLV preview-only file $path = get_resource_path($ref, true, "pre", false, $ffmpeg_preview_extension); if (file_exists($path)) { unlink($path); } # Remove any MP3 (except if the actual resource is an MP3 file). if ($extension != "mp3") { $path = get_resource_path($ref, true, "", false, "mp3"); if (file_exists($path)) { unlink($path); } } # Create previews global $enable_thumbnail_creation_on_upload; if ($enable_thumbnail_creation_on_upload) { create_previews($ref, false, $extension); } else { # Offline thumbnail generation is being used. Set 'has_image' to zero so the offline create_previews.php script picks this up. sql_query("update resource set has_image=0 where ref='{$ref}'"); } } # Update file dimensions get_original_imagesize($ref, $filepath, $extension); hook("Uploadfilesuccess", "", array("resourceId" => $ref)); # Update disk usage update_disk_usage($ref); # Log this activity. $log_ref = resource_log($ref, "u", 0); hook("upload_image_after_log_write", "", array($ref, $log_ref)); return $status; }
} // get all collections if ($get && $get_all_collections) { $all_collections = get_user_collections($user_id); printJson($all_collections); } // get all files within a specific collection if ($get_files_in_collection && $collection_id) { $fetchFiles = "SELECT * \n FROM resource \n WHERE \n ref IN (SELECT resource FROM collection_resource WHERE collection='{$collection_id}')"; $fetchCollection = "SELECT ref, name FROM collection WHERE ref='{$collection_id}'"; $fileData = sql_query($fetchFiles); $collectionData = sql_query($fetchCollection); foreach ($fileData as $k => $file) { // Get the size of the original file $filepath = get_resource_path($file['ref'], TRUE, '', FALSE, $file['file_extension'], -1, 1, FALSE, '', -1); $original_size = get_original_imagesize($file['ref'], $filepath, $file['file_extension']); $original_size = formatfilesize($original_size[0]); $original_size = str_replace(' ', ' ', $original_size); $fileData[$k]['original_size'] = $original_size; // file link $fileData[$k]['original_link'] = get_resource_path($file['ref'], FALSE, '', FALSE, $file['file_extension'], -1, 1, FALSE, '', -1); // collection $fileData[$k]['collection_id'] = $collectionData[0]['ref']; $fileData[$k]['collection_path'] = $collectionData[0]['name']; } printJson($fileData); } // get the collection ID by collection name if ($get && !empty($collection_name)) { $collection_name = urldecode($collection_name); if ($remove_unserscore) {