PageRenderTime 78ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/vendors/js/editors/ckeditor/plugins/doksoft_uploader/uploader.php

https://github.com/MilkZoft/zan
PHP | 175 lines | 138 code | 37 blank | 0 comment | 35 complexity | 0474ca72094855e520e091e1f4f576f2 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. require_once('config.php');
  3. $allok = false;
  4. $uploadedfileurl = '';
  5. function sendResponse($response) {
  6. $CKEditorFuncNum = (empty($_GET['CKEditorFuncNum']) ? -1 : $_GET['CKEditorFuncNum']);
  7. if ($CKEditorFuncNum == -1) {
  8. echo "<script type=\"text/javascript\">console.log('something went totally wrong')</script>";
  9. } elseif ($response[0] === true and $CKEditorFuncNum != -1) {
  10. echo "<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(". $CKEditorFuncNum .", '". $response[1] ."', '');</script>";
  11. } else {
  12. echo "<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(". $CKEditorFuncNum .",'' , '". $response[1] ."');</script>";
  13. }
  14. }
  15. function upload() {
  16. global $config;
  17. if (!empty($_GET) and isset($_GET['type']) and array_key_exists($_GET['type'], $config['ResourceType'])) {
  18. $rType = $config['ResourceType'][$_GET['type']];
  19. } else {
  20. return array(false, 'wrong request');
  21. }
  22. if (!empty($_FILES) and $_FILES['upload']['size'] > 0 and ($_FILES['upload']['size'] < $rType['maxSize'] or $rType['maxSize'] == 0)) {
  23. $tmp = explode('.', $_FILES['upload']['name']);
  24. $type = $tmp[count($tmp) - 1];
  25. if (!in_array(strtolower($type), array_map('strtolower', explode(',',$rType['allowedExtensions'])))) {
  26. return array(false,'wrong type');
  27. }
  28. } else {
  29. return array(false,'wrong size');
  30. }
  31. if ($_FILES["upload"]["error"] > 0) {
  32. return array(false,'upload error');
  33. }
  34. $tmpname = $_FILES['upload']['name'];
  35. $i = 1;
  36. while (is_file($rType['directory'] .'/'. $tmpname)) {
  37. $sourceFileArr = explode('.', $_FILES['upload']['name']);
  38. $sourceFileArr[count($sourceFileArr) - 2] .= '('.$i.')';
  39. $tmpname = implode('.',$sourceFileArr);
  40. $i++;
  41. }
  42. $filepath = $rType['directory'] .'/'. $tmpname;
  43. $fileurl = $rType['url'] .'/'. $tmpname;
  44. move_uploaded_file($_FILES['upload']['tmp_name'], $filepath);
  45. if ($_GET['type'] == 'Images' and isset($_GET['resize'])) {
  46. if (!resizeImg($filepath, $config['ResizedImages']['maxWidth'], $config['ResizedImages']['maxHeight'], $config['ResizedImages']['quality'], true, isset($_GET['resizeOnLess']))) {
  47. return array(false,'cannot resize');
  48. }
  49. }
  50. if ($_GET['type'] == 'Images' and isset($_GET['makeThumb'])) {
  51. if (!resizeImg($filepath, $config['Thumbnails']['maxWidth'], $config['Thumbnails']['maxHeight'], $config['Thumbnails']['quality'], false, true)) {
  52. return array(false,'cannot make thumb');
  53. }
  54. }
  55. return array(true, $fileurl);
  56. }
  57. function resizeImg($sourceFile, $width = 200, $height = 140, $quality = 90, $resizeself = false, $resizeOnLess = true) {
  58. $sourceImageAttr = @getimagesize($sourceFile);
  59. if ($sourceImageAttr === false) {
  60. return false;
  61. }
  62. switch ($sourceImageAttr['mime']) {
  63. case 'image/gif':
  64. if (@imagetypes() & IMG_GIF) {
  65. $oImage = @imagecreatefromgif($sourceFile);
  66. } else {
  67. $ermsg = 'GIF images are not supported';
  68. }
  69. break;
  70. case 'image/jpeg':
  71. if (@imagetypes() & IMG_JPG) {
  72. $oImage = @imagecreatefromjpeg($sourceFile) ;
  73. } else {
  74. $ermsg = 'JPEG images are not supported';
  75. }
  76. break;
  77. case 'image/png':
  78. if (@imagetypes() & IMG_PNG) {
  79. $oImage = @imagecreatefrompng($sourceFile) ;
  80. } else {
  81. $ermsg = 'PNG images are not supported';
  82. }
  83. break;
  84. case 'image/wbmp':
  85. if (@imagetypes() & IMG_WBMP) {
  86. $oImage = @imagecreatefromwbmp($sourceFile);
  87. } else {
  88. $ermsg = 'WBMP images are not supported';
  89. }
  90. break;
  91. default:
  92. $ermsg = $sourceImageAttr['mime'] .' images are not supported';
  93. break;
  94. }
  95. if (isset($ermsg) or false === $oImage) {
  96. return false;
  97. }
  98. $xscale = imagesx($oImage) / $width;
  99. $yscale = imagesy($oImage) / $height;
  100. if (!$resizeOnLess and $xscale < 1 and $yscale < 1) {
  101. return true;
  102. }
  103. if ($yscale>$xscale) {
  104. $new_width = round(imagesx($oImage) * (1 / $yscale));
  105. $new_height = round(imagesy($oImage) * (1 / $yscale));
  106. } else {
  107. $new_width = round(imagesx($oImage) * (1 / $xscale));
  108. $new_height = round(imagesy($oImage) * (1 / $xscale));
  109. }
  110. $new_image = imagecreatetruecolor($new_width, $new_height);
  111. imagecopyresampled($new_image, $oImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($oImage), imagesy($oImage));
  112. $oImage = $new_image;
  113. if (!$resizeself) {
  114. $sourceFileArr = explode('.', $sourceFile);
  115. $sourceFileArr[count($sourceFileArr) - 2] .= '_small';
  116. $sourceFile = implode('.',$sourceFileArr);
  117. } else {
  118. unlink($sourceFile);
  119. }
  120. switch ($sourceImageAttr['mime']) {
  121. case 'image/gif':
  122. imagegif($oImage, $sourceFile);
  123. break;
  124. case 'image/jpeg':
  125. imagejpeg($oImage, $sourceFile, $quality);
  126. break;
  127. case 'image/png':
  128. imagepng($oImage, $sourceFile);
  129. break;
  130. case 'image/wbmp':
  131. imagewbmp($oImage, $sourceFile);
  132. break;
  133. }
  134. @imageDestroy($oImage);
  135. @imageDestroy($new_image);
  136. return true;
  137. }
  138. sendResponse(upload());