=0){ $uploadedFile = array( "name" => $uploadedFile["name"][$key], "size" => $uploadedFile["size"][$key], "tmp_name" => $uploadedFile["tmp_name"][$key], "error" => $uploadedFile["error"][$key], "type" => $uploadedFile["type"][$key] ); } if($type=="sponsors"){ //for sponsor pictures $allowed_file_ext = array("jpeg", "gif", "jpg", "png"); $allowed_mime_types = array("image"); } else if($type=="events") { //for event attachments $allowed_file_ext = array("mp3", "mp4", "png", "jpeg", "gif", "jpg"); $allowed_mime_types = array("audio", "video", "image"); } $tmp = explode(".", $uploadedFile["name"] ); $file_ext = $tmp[countVal($tmp)-1]; $rename = generate_random_keys(20).'.'.$file_ext; $dest_path = $destination.$rename; if ($uploadedFile['error'] !== UPLOAD_ERR_OK) { output_to_json($current, array( "mtype" => "error" , "message" => $current->lang->line("upload_error_code") .$uploadedFile['error'] )); } else if(!is_uploaded_file($uploadedFile['tmp_name'])) { output_to_json($current, array( "mtype" => "warning" , "message" => "Possible file upload attack from : ".$uploadedFile['tmp_name'] )); } else if(!in_array(strtolower($file_ext), $allowed_file_ext) || !in_array(current( explode("/",$uploadedFile['type'])), $allowed_mime_types)) { output_to_json($current, array( "mtype" => "warning" , "message" => "The file you are uploading is not allowed!" )); } else if( move_uploaded_file($uploadedFile['tmp_name'], $dest_path) ) { return array( "validSize" => getImageRatios($uploadedFile,$file_ext,$dest_path), "file_name" => $rename, "file_size" => $uploadedFile['size'] ); //process upload } else { output_to_json($current, array( "mtype" => "error" , "message" => "Upload failed! Try again later." )); } } else { output_to_json($current, array( "mtype" => "warning" , "message" => "Upload destination directory is not writtable." )); } } /** * get Image ratios return "True" if ration Heigh width is less than expected desire height or width * * @param array $uploadedFile * @param string $file_ext * @param string $dest_path * @return bool */ function getImageRatios($uploadedFile,$file_ext,$dest_path){ $allowed_file_ext = array("jpeg", "gif", "jpg", "png"); $allowed_mime_types = array("image"); if(!in_array(strtolower($file_ext), $allowed_file_ext) || !in_array(current( explode("/",$uploadedFile['type'])), $allowed_mime_types)) { return [ "isInValid" => false, "message" => "File extension for ration compare should be jpg,gif,jpeg,png" ]; } if($dest_path == null || empty($dest_path)){ return [ "isInValid" => false, "message" => "Destination path is empty!" ]; } list($width, $height) = getimagesize($dest_path); if((int)$width < DESIRED_IMAGE_WIDTH && (int)$height < DESIRED_IMAGE_HEIGHT){ return [ "isInValid" => true, "message" => "Ratio should be: ".DESIRED_IMAGE_WIDTH.'x'.DESIRED_IMAGE_HEIGHT, "info" => $width.'x'.$height ]; } return ["isInValid" => false]; }